我有一个带有 3 个选项卡的选项卡式应用程序
第一个选项卡是表格视图 第二和第三个选项卡是单页视图
当用户单击视图之一中的表格单元格时,将使用返回按钮将新视图推送到表格单元格。
现在假设他们单击选项卡 2,然后返回选项卡 1。在选项卡 1 上推送的新视图仍然可见。我想要的是当他们使用另一个选项卡离开它时让表格视图“重置”,这样当他们返回时,他们会看到表格视图而不是推送的新视图。
我有一个带有 3 个选项卡的选项卡式应用程序
第一个选项卡是表格视图 第二和第三个选项卡是单页视图
当用户单击视图之一中的表格单元格时,将使用返回按钮将新视图推送到表格单元格。
现在假设他们单击选项卡 2,然后返回选项卡 1。在选项卡 1 上推送的新视图仍然可见。我想要的是当他们使用另一个选项卡离开它时让表格视图“重置”,这样当他们返回时,他们会看到表格视图而不是推送的新视图。
我同意 ElJay 的评论,但要回答这个问题,请使用 UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
选择新选项卡时,查看当前选项卡是否是选项卡 1 selectedIndex 属性,tabBarController
如果是popToRootViewController:
正如其他人所说,这可能不是一个好的用户体验。选项卡控制器的想法是,它允许用户在应用程序的不同部分之间自由切换,并直接回到他们之前所做的事情。
如果您决定这样做,则将导航视图控制器的根视图控制器设置为自定义子类,并将其设置为选项卡栏控制器的委托。
在您的自定义视图控制器中,实现函数 shouldSelect(),如下所示:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
{
if viewController == self.navigationController {
self.navigationController.popToRootViewController()
}
return true
}
披露:我没有尝试编译上面的代码,更不用说测试了。