UITabBarController 的子视图控制器中的导航栏按钮无响应

Posted

技术标签:

【中文标题】UITabBarController 的子视图控制器中的导航栏按钮无响应【英文标题】:Navigation bar button unresponsive in child view controller of UITabBarController 【发布时间】:2014-03-24 15:17:02 【问题描述】:

我通过调用 navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"tabController"]]; 来实例化我的 UITabBarController

我的标签栏控制器有一个嵌入在导航控制器中的子视图。但是,当我触摸栏按钮(item)(导航栏中的按钮)时,它们没有响应。我已尝试记录该操作,但似乎按钮根本没有触发。

唯一不同的是我实例化标签栏控制器的方式。我错过了什么吗?

我将故事板中的导航栏按钮连接到一个动作,因此它已成功连接。请注意,还有一个导航控制器指向 UITabbarController 未在下面显示。

【问题讨论】:

【参考方案1】:

不想要的行为可能是因为 Apple HIG 不建议这种流程(导航控制器到标签栏控制器)。更多信息可以在这里找到:Storyboard with NavigationController and TabController。我找到的解决方案是在导航控制器上隐藏链接到导航栏的导航栏(可以在界面生成器中完成),然后让它重新出现在标签栏链接到的新导航控制器中。我知道很困惑,我可以帮助遇到类似问题的任何人。

【讨论】:

我遇到了类似的问题... [***.com/questions/40101381/…【参考方案2】:

你这样做有什么具体原因吗:

navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"tabController"]];

您可以只使用 Storyboard 简单地将一个插座从 UITableViewController 拖到 UINavigationController。

【讨论】:

我正在使用第三方库,该库以编程方式进行了一些查看。该库是一个以这种方式实例化所有其他视图的菜单【参考方案3】:

我想你忘了添加导航项。在情节提要中,将导航项添加到您的 viewController 并将您的栏按钮项移动到出现在顶部的导航栏。

【讨论】:

不幸的是它仍然不起作用!它太奇怪了,它只是没有响应。 您是否通过拖放手动添加了导航栏,或者您正在使用 viewController 的设置并将其从推断更改为具有导航栏? 我没有手动添加导航栏,viewController还是推断出来的,要不要改一下? 不,它应该按照你的方式工作......唯一的事情就是你说你已经完成的导航项目。您可以发布您的故事板的图像(显示视图控制器上的视图/元素的层次结构)吗? 我在这里找到了可能导致奇怪行为的答案:***.com/questions/14246454/…

以上是关于UITabBarController 的子视图控制器中的导航栏按钮无响应的主要内容,如果未能解决你的问题,请参考以下文章

ios uiviewcontroller uitabbarcontroller 的子级

如何从它的项目 ViewControllers 访问 UITabBarController 的变量

交互PopGesture时如何处理UITabBarController的子视图(如Flipboard)

如何在 iOS 中检索数据并将数据传递给标签栏控制器的子视图?

UITabBarController - 如何访问视图控制器?

在 UITabBarController 中的两个子视图控制器之间转换