如何在“更多”视图中切换到标签栏项目?

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 如何将其整个视图控制器表示层次结构保存在内存中?

切换到另一个视图控制器时,如何保持标签栏可见? [关闭]

在导航到另一个视图控制器之前切换标签栏

在 UITabBarController 中,如何从一个视图控制器切换到另一个视图控制器并保留标签栏?

如何将“更多”按钮添加到标签栏?

从模态视图切换到标签栏视图控制器并且不会丢失标签栏