viewWillAppear in viewcontrollers of a tabbar
In my tab-bar I have four viewcontrollers, and what happens in one can affect the view of the other, so I may need to reload some elements in th开发者_JS百科e viewcontroller when it becomes visible. Normally I'd fix that by implementing viewWillAppear, but when I switch between the tabs, viewWillAppear does not seem to get called. How can I fix that, or what should I do instead?
Update: as a PS I should add that this is a tabbarcontroller in a navigationcontroller hierarchy
Cheers
Nik
You may use the tabbar controller delegate works like a charm
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { [viewController viewWillAppear:YES]; }
Please see my answer here
iPhone viewWillAppear not firing
And in case you find this question because you would like to update something in the UITabBarController
itself, not the UIViewControllers
of a UITabBarController
, like the OP's question. For example, hiding or displaying a custom UITabBarButton
. In Swift 3.0 overriding setNeedsStatusBarAppearanceUpdate
of my UITabBarController
class worked for me.
override func setNeedsStatusBarAppearanceUpdate() {
}
viewWillAppear
should only be used when the view appears, and not for updating it.
Use setNeedsDisplay
on the viewController
's view instead.
精彩评论