ios 当我在tabBarController中切换选项卡时,会调用哪个方法?

kt06eoxx  于 12个月前  发布在  iOS
关注(0)|答案(4)|浏览(223)

当我在tabBarController中切换选项卡时,将调用哪个方法
我知道第一次它会调用viewDidLoad方法,我想知道当我切换到一个特定的选项卡时(第二次或第三次)是否有任何方法。
问候

bis0qfac

bis0qfac1#

可以使用UITabBarControllerDelegate方法tabBarController:didSelectViewController:

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

字符串

qltillow

qltillow2#

方法viewWillDisappear:在你每次要离开当前视图控制器(以及当前选项卡)时被触发,而viewWillAppear:在每次要显示视图时被触发。
这些方法的完整参考可以在UIViewController文档中找到。

neekobn8

neekobn83#

这是相当旧的,但它确实出现在谷歌和链接到从另一个答案。所以,我想我会更新它。
如果您的可扩展BarController正在显示UIViewController,(即它的视图),然后你必须检查ViewController方法,当视图消失和出现时触发。你可以使用viewWillDisappear来确定你的视图是否即将被切换,viewWillAppear来测试你的视图是否刚刚被切换回来。注意,TabBarController通常会保持ViewController加载,使用TabBarDelegate方法的问题是,您需要知道viewController的名称,这使得它成为一个依赖项。更改名称可能会破坏xcode重命名Class String表示的能力。避免它。此外,您不希望看到一堆条件垃圾检查如果你的标签栏只是加载了一个特定的标签,除非你不能避免它。另一件事要注意的是,如果一个特定的标签提供了一个TableViewController,如果你需要改变单元格中的数据来响应被切换离开,你可能不得不求助于其他技术。我使用willMoveToWindow:(UIWindow *)newWindow来在视图消失的情况下获得通知。可能有一个更好的方法。

ktecyv1j

ktecyv1j4#

Swift 5.5解决方案:

1.符合UITabBarControllerDelegate
1.添加以下委托函数

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    // your code on selected viewController
 }

字符串

注意:请注意,UITabBarController不会在第一次出现时触发此功能

相关问题