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