在我的一个ViewControllers中,我有以下代码:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController: (UIViewController*)viewController {
NSLog(@"Yup!");
}
和:
UITabBarController *tabController = (UITabBarController*)self.window.rootViewController;
tabController.selectedIndex = 1;
每当我在多标签设置中切换标签时,控制台都会吐出
烨
正如所料。
然而,当我添加
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
到我的AppDelegate.m&#39>
{{1}}&#39> Yup'不再显示了。
怎么回事?
答案 0 :(得分:0)
当您从应用程序本身选择/更改标签时,didSelectViewController将调用,当您以编程方式设置selectedIndex时,它将不会调用
tabController.selectedIndex = 1;
,在您想要设置默认标签或想要以编程方式更改selectedIndex时非常有用
来自apple doc:
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
仅在响应标签栏中的用户点击时调用它,而不是 当您的代码以编程方式更改标签栏内容时调用。
您可以尝试手动调用该方法:
- (void) selectedItemWithIndex:(int)value {
tabbar.selectedIndex = value;
[self tabBarController:tabbar didSelectViewController:tabbar.viewControllers.firstObject];//place you vc here by array or manually
}