iOS的选项卡式应用程序与表视图,如何重置表视图选项卡? 初学者。

我有一个带有3个选项卡的选项卡应用程序

第一个选项卡是表格视图第二个和第三个选项卡是单个页面视图

当用户点击一个表格单元格时,一个新的视图被一个后退button推到表格单元格中。

现在让我们说他们点击标签2,然后回到标签1.在标签1上推送的新视图仍然可见。 我想要的是当他们从另一个选项卡离开它的表视图“重置”,以便当他们返回时,他们呈现与表视图,而不是推新的视图。

我同意ElJay的评论,但要回答这个问题使用UITabBarControllerDelegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

当一个新的选项卡被选中,看看是否当前是popToRootViewController: selectedIndex属性,如果是这样popToRootViewController:

正如其他人所说,这可能不是一个好的用户体验。 选项卡控制器的想法是,它可以让用户在应用程序的不同部分之间自由切换,然后回到以前的工作状态。

如果你决定这样做,那么使你的导航视图控制器的根视图控制器是一个自定义的子类,并将其设置为标签栏控制器的代表。

在您的自定义视图控制器中,实现函数shouldSelect(),如下所示:

 func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { if viewController == self.navigationController { self.navigationController.popToRootViewController() } return true } 

披露:我没有试过编译上面的代码,更不用说testing它了。