UITabBarController委托方法永远不会被调用

新生儿

我目前正在重构iPad应用程序,而不是在NavigationBar上重构按钮,而是将注销按钮作为TabBar按钮项放置。

我所有的视图都位于一个独特的StoryBoard中,因此我可以通过以下方式在Appdelegate.m中获取TabBar:

// Add logout tab to tabbar
storyboard                      = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabbar      = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabbar"];
[tabbar setDelegate:self];

当然,委托协议是在我的Appdelegate.h中声明的

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

之后,我创建一个空的viewController来创建我的注销选项卡:

UIViewController *logout        = [[UIViewController alloc]init];

然后我将Tabbar viewControllers作为NSMutableArray并添加我的注销VC:

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[tabbar viewControllers]];

[viewControllers addObject:logout];

最后,我用新数组设置了标签栏viewControllers:

[tabbar setViewControllers:viewControllers];

我认为这些步骤是正确的。那么,为什么在更改显示的选项卡时未调用didSelectViewController?

如果有帮助,这是我的didSelectViewController方法(在AppDelegate.m中编写)

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"onglet sélectionné : %d / %d", [tabBarController selectedIndex], [[tabBarController viewControllers]count]);
    //select the index where your logout button is
    if ([tabBarController selectedIndex] == [[tabBarController viewControllers]count]-1) {
        NSLog(@"logout");
    }
}

在此先感谢您的帮助 !

卡格曼斯

放入[self setDelegate:self];您的ViewDidLoad或初始化该对象的位置

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章