带有 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 NSMutableArray * arrayKA; IBOutlet UITableView *TableKA;我用 tableView 曲棍球 IBOutlet(在 SB 中拖动)我不明白你的遗言“..并手动将 UITableView 与这些代表相关联。”我是 Xcode 的新手,但我想如果你能帮助我理解你的意思,我可以弄清楚。再次感谢!大有帮助! @EmilOoo 我在 ForthViewController 中的“手动将 UITableView 与这些代表关联”的意思。实现你必须明确声明 self.TableView.delegate = self; self.TableView.Datasource = 自我;查看 Apple 文档,了解使用这些委托时需要实现的方法。希望这会有所帮助!

以上是关于带有 UIViewController(或 UITableViewController)的 tableView 属性的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIViewController(或 UITableViewController)的 tableView 属性

将搜索栏添加到 UIViewController 类

未分配给父 UIViewController 视图属性时,UITableView 不滚动

在按钮点击时为选定的行设置动画

关闭模态视图并调整父视图的大小?

将带有 ScrollView 和 AutoLayout 的 UIViewController 添加到另一个 UIViewController