UITabBarcontroller、UITableView 和 pushView

Posted

技术标签:

【中文标题】UITabBarcontroller、UITableView 和 pushView【英文标题】:UITabBarcontroller, UITableView and pushView 【发布时间】:2010-10-15 15:35:43 【问题描述】:

我有一个带有一组选项卡的 UITabBarController。 其中一些在被选中时会显示一个表格。 如果触摸表格的单元格,则使用“pushViewController”将用户带到单元格本身中对象的详细信息屏幕。

当我点击不同的选项卡并进入详细信息页面时,我会看到新的选项卡页面。 这很好。当我单击返回上一个选项卡时,我希望再次显示表格而不是详细信息页面...

这可能吗?

谢谢!

【问题讨论】:

【参考方案1】:

这是可能的。代码:

// Called when the user selected a tab. In ios3+, called even when no change occurs.
- (void)tabBarController:(UITabBarController *)tabbarcontroller didSelectViewController:(UIViewController *)viewController

    UINavigationController *nav = (UINavigationController *)viewController;
    [nav popToRootViewControllerAnimated: NO];

解释:

这在您的 AppDelegate 中。 您的 AppDelegate 是一个 UITabBarControllerDelegate。 您将 UITabBarController 的委托(在 InterfaceBuilder 中)设置为 AppDelegate。 您的选项卡必须包含作为导航控制器的根控制器(必须如此,否则您将无法“推送”详细信息)。

【讨论】:

感谢您的建议,但我无法让它工作。看起来该方法从未被调用...因为我添加了一个日志并且它从未出现...【参考方案2】:

请参阅UITabBarControllerDelegate 协议以设置在切换选项卡时通知哪个控制器,然后使用该协议弹出详细控制器。

顺便说一句,您也可以像这样在界面构建器中进行大部分导航控制器设置:

【讨论】:

这个我有,它可以工作,唯一的问题是你给我的代码的 sn-p 是什么。看起来该方法没有被调用... 不是我给你的代码 sn-p。无论如何,如果我理解您的问题,您想检测何时有人切换标签。您可以使用标签栏委托来做到这一点。查找 UITabBarController、UITabBar 并查找委托属性。 你明白了,我发现我忘了设置委托控制器。 我所做的是添加 tabBarController.delegate = self;到 application:didFinishLaunchingWithOptions: 现在它可以工作了!非常感谢!

以上是关于UITabBarcontroller、UITableView 和 pushView的主要内容,如果未能解决你的问题,请参考以下文章

从一个 UITabBarController 导航到另一个 UITabBarController

UITabBarController

如何使屏幕仅垂直。 (UITabBarController/Swift)

UITabBarController简单介绍

UITabBarController

UITabBarController 上的 WYPopoverController 下降