如何在“更多”视图中切换到标签栏项目?
Posted
技术标签:
【中文标题】如何在“更多”视图中切换到标签栏项目?【英文标题】:How to switch to a tabbar item in the "More" View? 【发布时间】:2013-03-26 12:42:06 【问题描述】:我正在为 Iphone/Ipad 编写目标 c 中的应用程序。我在标签栏的“更多”中有一些项目。我想切换到其中一种观点。我该怎么做?通常我会使用 selectedIndex,但它在“更多”选项卡上不起作用。
【问题讨论】:
【参考方案1】:要从更多屏幕中选择视图控制器,您应该首先选择更多视图控制器,因为它在之前的答案中显示:
[tabBarController setSelectedViewController: [tabBarController moreNavigationController]]
然后对更多视图控制器执行pushViewController方法
[[tabBarController moreNavigationController] pushViewController:neededViewController animated:NO]
或者使用更好的方法:
[tabBarController setSelectedViewController: neededViewController ]
【讨论】:
如何找到需要的ViewController?如果我创建一个新的 (Home *homeView = [[Home alloc] init]; [tabBarController setSelectedViewController: homeView ];) xcode 在运行时告诉我“由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[UITabBarController setSelectedViewController :] 只能选择选项卡栏控制器的视图控制器列表中的视图控制器。” Home是一个由uitabbar管理的View控制器 只有当它包含在 tabBarController.viewControllers 数组中时,您才能选择选定的视图控制器。 [tabBarController setSelectedViewController:[tabBarController.viewControllers objectAtIndex:neededIndex]] 谢谢!这段代码完美运行!我可以要求您将其添加(根据需要修改)到您的答案中以使其更完整吗? [tabBarController setSelectedViewController: [tabBarController.viewControllers objectAtIndex:7]];【参考方案2】:[myTabBarController setSelectedViewController: viewControllerThatYouNeed];
编辑:
尝试使用 UITabBarController 的 selectedViewController 属性。 来自 Apple 文档:
块引用 在 ios 3.0 及更高版本中,您可以使用此属性来选择 viewControllers 属性中的任何视图控制器。这包括由更多导航控制器管理的视图控制器,其标签栏项目在标签栏中不可见。
【讨论】:
这会导致更多视图。如果我想转到更多视图中的项目? 我无法获取代码来选择正确的视图控制器。如果我创建一个新的 (Home *homeView = [[Home alloc] init]; [tabBarController setSelectedViewController: homeView ];) xcode运行时告诉我“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[UITabBarController setSelectedViewController:] 只能选择选项卡栏控制器的视图控制器列表中的视图控制器。” Home是一个由uitabbar管理的View控制器以上是关于如何在“更多”视图中切换到标签栏项目?的主要内容,如果未能解决你的问题,请参考以下文章
切换标签栏项目时,UINavigationController 如何将其整个视图控制器表示层次结构保存在内存中?