我正在重构我的iPad应用程序而不是NavigationBar上的按钮,我想将我的Logout按钮作为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];
最后,我使用新数组设置tabbar 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");
}
}
提前感谢您的帮助!
答案 0 :(得分:9)
将[self setDelegate:self];
放入ViewDidLoad或对象初始化的位置
答案 1 :(得分:-2)
尝试初始化tabbar对象;
// Add logout tab to tabbar
storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabbar = [[UITabBarController alloc] init];
tabbar = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabbar"];
[tabbar setDelegate:self];