iOS8 自定義UITabBar (使用popToViewController導致的UITabBarButton重疊的問題)

穿山甲到底說了什麼發表於2018-12-19

想看詳細的,可以看這篇文章,有時候 在popToViewController 的時候 ,原本一開始被我們移除的UITabbarButton會莫名其妙的再次載入到UITabBar上了,考慮到我們一開始就在UITabBarController的- ViewDidLoad 方法裡面移除了,如下面這樣:

//@interface MainTabBarController : UITabBarController

- (void)viewDidLoad {

    for (UIView *subView in self.tabBar.subviews) {
    
        [subView removeFromSuperview];
     }
     //自定義一些控制元件子檢視
 }
複製程式碼

而且 -ViewDidLoad 此方法在生命週期裡面只會走一次,所以我們斷定一定是在Apple 在 [super viewWillLayoutSubviews] 做了一些判斷,所以我們必須要在 [super viewWillLayoutSubviews] 之後再移除掉就行了

//@interface MainTabBarController : UITabBarController

- (void)viewWillLayoutSubviews {

    [super viewWillLayoutSubviews];

    for (UIView *subView in self.tabBar.subviews) {
    
        ![subView isKindOfClass:NSClassFromString(@"UITabBarButton")] ?: [subView removeFromSuperview];
    }
}
複製程式碼

相關文章