更改 UITabBar 选项卡时关闭 DetailController?
Posted
技术标签:
【中文标题】更改 UITabBar 选项卡时关闭 DetailController?【英文标题】:Dismiss DetailController when UITabBar tab is changed? 【发布时间】:2013-03-22 18:24:26 【问题描述】:我正在开发一个应用程序,其中我在 UITabBarController
中嵌入了一个 UINavigationController
。 UINavigationController
有一个 UITableView
,当点击一个单元格时,它会转换为 DetailController。
我的问题是:我在 [TAB1] 上选择了一个单元格并转换到 DetailController。如果我选择 [TAB2] 然后返回 [TAB1] 它仍然在细节控制器上。如果选择 [tab2] ,我可以在 [tab1] 上放松/解散 detailcontroller em>(即它显示表格视图时细胞)。
我的另一个想法是这样做不会让 UI 处于用户离开的状态,即在查看 DetailController 并按下 [TAB2] 之后返回 [TAB1] 将向用户显示UITableView
中的单元格。如果您离开 TAB,应用程序恢复 DetailController 感觉更好,这就是我问的原因...
注意:I present the *DetailController* via a push segue from the
UITableViewCell.
【问题讨论】:
【参考方案1】:您可以实现UITabBarControlleDelegate 并在标签更改时使用popToRootViewControllerAnimated:
返回UINavigationController
的根视图。
代码示例:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.delegate = self;
return YES;
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
UIViewController *currentController = tabBarController.selectedViewController;
if ([currentController isKindOfClass:[UINavigationController class]])
[(UINavigationController *)currentController popToRootViewControllerAnimated:NO];
return YES;
【讨论】:
要实现这一点,您需要将 UINavigationController 设为 UITabBarController 的 UITabBarControllerDelegate。我理解正确吗? 不,您可以将UIAppDelegate
设置为UITabBarControllerDelegate
的代表
非常感谢谢尔盖,非常感谢您扩展您的答案,现在我明白了。以上是关于更改 UITabBar 选项卡时关闭 DetailController?的主要内容,如果未能解决你的问题,请参考以下文章