弹出窗口中的 UITableView 是不是需要 UINavigationController?

Posted

技术标签:

【中文标题】弹出窗口中的 UITableView 是不是需要 UINavigationController?【英文标题】:Is UINavigationController needed for UITableView in a popover?弹出窗口中的 UITableView 是否需要 UINavigationController? 【发布时间】:2013-05-16 22:28:14 【问题描述】:

我有一个 iPad 应用程序(XCode 4.6、ios 6.2、Storyboards、ARC),有 4 个场景和一个导航控制器,全部使用 segues 连接。在第一个场景中,如果用户点击它,它将显示一个包含 UITableView 的 UIPopover。 popover 和 tableview 没有通过 segues 连接到任何东西。这是布局的图像:

Navigation Controller、UITableView 和 UIView 是红框内的三个控制器。问题是当我点击第一个 UITableView 中的一行时,它不会转移到 UIView。我只使用 push segue 来转移到下一个场景。

更新 在 NavigationController 中嵌入 UITableViewController 并进行必要的连接:tableViewCell 到 UIView,(推送模式)。现在我收到了这个运行时错误(如果我将模式更改为模态,它可以工作但会填满整个窗口......如果我将模式更改为弹出框,它可以工作,但现在我有两个弹出框,看起来像 3一岁写的!:-

*** 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“只有在源控制器由 UINavigationController 的实例管理时才能使用推送序列。”

红框中的大场景是导航控制器……那为什么找不到呢?

【问题讨论】:

【参考方案1】:

是的,popover 需要它自己的 navigationController。您是否检查过 self.navigationController 是否包含 smth.?如果什么都没发生,它可能是 nil。

【讨论】:

是的,navigationController 是 nil... 好的,那么如何连接它们以便 UITableView 和 UIView 识别导航控制器? 尝试使用导航控制器嵌入您的表格视图。这应该可以帮助你。 我按照你的建议做了,但是 NSLog 仍然将导航控制器显示为 nil...然后我尝试使用 segue(使用嵌入式导航控制器)将 UITableView 连接到 UIView,但这并没有也不行。 我认为这是一个错误,但我现在没有时间报告它;我决定在这种特殊情况下不使用 seague,但仍然必须有一个导航控制器。感谢大家的宝贵时间。

以上是关于弹出窗口中的 UITableView 是不是需要 UINavigationController?的主要内容,如果未能解决你的问题,请参考以下文章

移动到显示 UITableView 的弹出窗口中的下一个视图

在弹出窗口的标签栏中取消导航控制器中的 UITableView 搜索后,UINavigationBar 无响应

带有自定义单元格的 UITableView 弹出窗口失败,单元格属性始终为零

是否可以在共享扩展中打开全视图控制器,而不是弹出窗口(默认)

在弹出窗口中显示多个图像

检测用户是不是点击了弹出窗口中的元素