如何从UITabBarItem获取RootViewController

时间:2015-03-04 20:00:21

标签: ios objective-c uitableview uinavigationcontroller uitabbarcontroller

我甚至不确定标题是否正确,但我不明白如何解释它,所以在这里。我会告诉你我做了什么,你会理解。

首先,我正在使用UITabBarController,我有三个不同的项目。

1)应用程序启动,它显示第一个项目是UITableView

2)我点击一个单元格,它将我推向细胞的详细视图。

3)我从那里导航到另一个TabBarItem

4)我导航回第一个TabBarItem,它仍然显示了步骤3)中的视图。我不希望我想让它向我展示步骤1)中的第一个视图

我怎样才能实现这个目标?

2 个答案:

答案 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