有些日子我现在一直患有UITabBarItem
s。
我已经以编程方式完成了我的应用程序,而不是使用Interface Builder。
我同时拥有UINavigationBar
和UITabbarController
。
当我点击下一个标签项目(联系人)的时候,当我进行导航(我的意思是当我移动到下一页)时,从主页开始,当我点击主页按钮时,它再次移动到主页,它保留在我离开那一页的上一页,它根本没有重定向到主页,
我已将UITabbarController
- 代码放在我的应用程序委托中:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.tabBarController = [[UITabBarController alloc] init];
viewController *vc = [[viewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
[navController.tabBarItem setTitle:@"Home"];
[navController.tabBarItem setImage:[UIImage imageNamed:@"home.png"]];
viewController1 *vc1 = [[viewController1 alloc] init];
UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:vc1];
[navController1.tabBarItem setTitle:@"Contact"];
[navController1.tabBarItem setImage:[UIImage imageNamed:@"contact.png"]];
viewController2 *vc2 = [[MapViewController alloc] init];
UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:vc2];
[navController2.tabBarItem setTitle:@"Info"];
[navController2.tabBarItem setImage:[UIImage imageNamed:@"info.png"]];
NSArray *viewControllers = [NSArray arrayWithObjects:navController, navController1,navController2, nil];
_tabBarController.delegate = self;
[_tabBarController setViewControllers:viewControllers];
[self.window setRootViewController:_tabBarController];
[self.window makeKeyAndVisible];
return YES;
我没有使用这些方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
请给我一些建议,或者对我有用的东西。
答案 0 :(得分:0)
UITabbarController的默认行为是,如果您点击选项卡并且此选项卡包含navigationcontroller,则会获得位于navigationcontrollers viewcontroller-stack顶部的页面。
要避免这种情况,点击选项卡时必须使用popToRootViewController。
如果您实施
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
[viewController.navigationController popToRootViewControllerAnimated:NO];
}
它应该可以解决问题。