我甚至不确定标题是否正确,但我不明白如何解释它,所以在这里。我会告诉你我做了什么,你会理解。
首先,我正在使用UITabBarController,我有三个不同的项目。
1)应用程序启动,它显示第一个项目是UITableView
2)我点击一个单元格,它将我推向细胞的详细视图。
3)我从那里导航到另一个TabBarItem
4)我导航回第一个TabBarItem,它仍然显示了步骤3)中的视图。我不希望我想让它向我展示步骤1)中的第一个视图
我怎样才能实现这个目标?
答案 0 :(得分:2)
假设您已在AppDelegate中设置了标签栏控制器,您希望将其设为<UITabBarControllerDelegate>
在您的AppDelegate.m中,您希望像这样实现此方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:[UINavigationController class]]) {
[(UINavigationController*)viewController popToRootViewControllerAnimated:YES];
}
}
答案 1 :(得分:2)
您可以实施UITabBarController
委托方法:
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
选择标签时会通知您。
如果您没有UIViewController
的引用,则可以使用UITabBar
的{{1}}来访问:
UIViewController
从中获取您需要重置和调用的相应@property(nonatomic, copy) NSArray *viewControllers
(或UIViewController
)的refence:
UITableViewController
在- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
上。或者以这种方式调用UINavigationController
来为该调用创建一个公共方法。
修改强>
您的AppDelegate应如下所示:
popToRootViewController