带有 UIViewController(或 UITableViewController)的 tableView 属性
Posted
技术标签:
【中文标题】带有 UIViewController(或 UITableViewController)的 tableView 属性【英文标题】:tableView property with UIViewController (or UITableViewController) 【发布时间】:2012-04-26 09:48:12 【问题描述】:#import <UIKit/UIKit.h>
@interface FourthViewController : UIViewController
//@interface FourthViewController : UITableViewController
我想更新我的表格视图,所以我尝试使用[self.tableView reloadData]
,但我什至无法输入这行代码,因为我正在使用UIViewController
,而tableView
属性仅适用于UITableViewController
.所以我尝试变得聪明,只是将UIViewController
更改为UITableViewController
,但我得到了这个错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "b4k-XH-Uhj-view-V2h-dE-ixJ" nib but didn't get a UITableView.'
Imo 这很奇怪,因为 UITableViewController 可以为 tableView 工作,但反过来不行,但接缝好像我全都错了,或者这里发生了什么? 如果您需要更多代码=) 提前谢谢。
【问题讨论】:
【参考方案1】:UITableViewController 实际上只是一个 UIViewController,它包含一个到 UITableView 的出口并实现两个 tableview 委托:UITableViewDelegate 和 UITableViewDataSource。
您可能需要考虑将 nib 文件中的 viewcontroller 实例替换为 UITableViewController 而不是标准的 UIViewController。
或者,您可以手动调整您的 ForthViewController 实例,方法是为包含的 UITableView 创建一个 outlet 以将 tableview 作为属性公开。
但是,如果您这样做,您还必须在某处(可能在 ForthViewController 中)手动实现两个 tableview 委托 UITableViewDelegate 和 UITableViewDataSource,并手动将 UITableView 与这些委托关联。
【讨论】:
您好,感谢您如此迅速而明确地回答。在我阅读您的答案之前,我已经开始这样做了。我认为这是您的“替代”方式。 @interface FourthViewController : UIViewController以上是关于带有 UIViewController(或 UITableViewController)的 tableView 属性的主要内容,如果未能解决你的问题,请参考以下文章
带有 UIViewController(或 UITableViewController)的 tableView 属性
未分配给父 UIViewController 视图属性时,UITableView 不滚动
将带有 ScrollView 和 AutoLayout 的 UIViewController 添加到另一个 UIViewController