为啥 UITableViewController self.tableView 属性在 UIPopoverController 中呈现时为 Nil?

Posted

技术标签:

【中文标题】为啥 UITableViewController self.tableView 属性在 UIPopoverController 中呈现时为 Nil?【英文标题】:Why Is UITableViewController self.tableView Property Is Nil When Presented in UIPopoverController?为什么 UITableViewController self.tableView 属性在 UIPopoverController 中呈现时为 Nil? 【发布时间】:2010-12-06 00:24:01 【问题描述】:

我有一个基于 nib 的 UITableViewController,它在 iPad 上运行时呈现在 UIPopoverController 中,而在 iPhone 上运行时呈现为“本机”。

在 iPad 上运行时,控制器的 self.tableView 属性在其整个生命周期内为零。作为正常操作的一部分传入 tableView 的委托消息工作正常,并且具有对 table view 的引用。

在 iPhone 上,该属性已设置,并且引用是有效的,正如您所期望的那样。

有什么特定的东西会导致 self.tableView 属性为零?我已经仔细检查了 Interface Builder 中的连接 - Nib 只包含一个表格视图和相关的 UISearchBar 内容。 Nib 中的表格视图设置为视图控制器的视图。

这在两台设备上都是 4.2.1。对此一头雾水,找不到我的错误。

【问题讨论】:

【参考方案1】:

我发现了我的问题,当然,这是一个编程错误。

在这种情况下,实现文件顶部的错误 @synthesize tableView 会生成冲突的 getter 和 setter。

抱歉并感谢那些看过这篇文章的人。

【讨论】:

【参考方案2】:

试试这个...在返回 tableView 对象的方法之一中执行“assert(self.view == tableView);”看看会发生什么。如果断言没有触发,并且我怀疑它不会在 iPhone 或 iPad 中触发,那么只需将 self.view 转换为 UITableView 并执行您需要执行的操作。

【讨论】:

以上是关于为啥 UITableViewController self.tableView 属性在 UIPopoverController 中呈现时为 Nil?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UITableViewController 页脚高度不会改变?

为啥我不能使用“List”作为 UITableViewController 子类的类名?

为啥 UIViewController 在 UINavigationBar 下扩展,而 UITableViewController 没有?

当我触摸后退按钮时,为啥 UINavigationController 不弹出 UITableViewController?

为啥这个 popover segue 以 UITableViewController 为中心?

UISplitView 上的 UITableViewController。为啥向下钻取留在第一张桌子上? (使用单点触控)