当我在tabBarController中的选项卡之间切换时,将调用哪个方法?

时间:2010-12-13 16:06:33

标签: ios objective-c iphone

当我在tabBarController

中的选项卡之间切换时,将调用哪个方法

我知道它第一次会调用viewDidLoad方法,我想知道当我切换到特定选项卡(第二次或第三次)时是否有任何方法可以实现。

问候

3 个答案:

答案 0 :(得分:3)

您可以使用UITabBarControllerDelegate方法tabBarController:didSelectViewController:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    //do something
}

答案 1 :(得分:1)

这是相当古老的,但它确实出现在Google上,并与另一个答案相关联。所以,我以为我会更新它。

如果您的UITableBarController正在显示UIViewController(即其视图),那么您必须检查视图消失并出现时触发的ViewController方法。您可以使用viewWillDisappear查看您的视图是否即将被切换,并查看viewWillAppear以测试您的视图是否已切换回。请注意,TabBarController通常会保持ViewControllers的加载,只是将它们的视图移出和移入。使用TabBarDelegate方法的问题是您需要知道viewController的名称,这使得它成为依赖项。更改名称,它可能会破坏xcode重命名类字符串表示的能力。躲开它。此外,您不希望进行一系列条件垃圾检查,看看您的tabbar是否只是加载了一个特定的选项卡,除非你无法避免它。另一件需要注意的事情是,如果某个特定选项卡显示TableViewController,如果您需要更改单元格中的数据以响应切换,则可能需要使用其他技术。我正在使用willMoveToWindow:(UIWindow *)newWindow在视图消失时在UITableViewCell案例中得到通知。可能有更好的方法。

答案 2 :(得分:0)

每次您要离开当前视图控制器(以及当前选项卡)时都会触发方法viewWillDisappear:,并且每次要显示视图时都会触发viewWillAppear:

可以在UIViewController文档中找到这些方法的完整参考。