Objective-C / iOS:为自定义视图子类化UITableViewController

时间:2012-07-16 15:53:00

标签: objective-c ios cocoa-touch

众所周知,Cocoa Touch中的表视图是最简单的框架元素之一。为方便起见,Apple为我们提供了一个很好的视图控制器类来封装vc中的表视图的功能,UITableViewController

同时,我们有时希望利用表格视图的功能而不占用整个屏幕。但是,似乎没有办法通过继承UITableViewController来实现这一点。相反,我必须连接表视图并手动订阅UITableViewDelegateUITableViewDataSource。如果我尝试继承UITableViewController,我的应用程序会崩溃,甚至可以将视图放在屏幕上...

我的问题是,有什么我想念的吗?在继承UITableViewController时,我将自定义表视图连接到UITableViewController中的tableView属性。还有什么我必须要做的吗?

2 个答案:

答案 0 :(得分:8)

UITableViewController仅在UIViewController上添加了一些小便利:它创建并定位表格视图,挂钩代表和& datasource(通常为自身)将视图控制器editing属性传递给表,并在视图出现时执行几个有用的UI位。 (详见[文档] [1]。)

以上所有内容都是A)为了拥有非全屏表而需要更改的东西,或者B)你可以在一行或两行中做的事情,以及{{ 1}}只是为了您的方便。对于这样的情况,最好使用自己的UITableViewController子类。

答案 1 :(得分:2)

第1步:子类UIViewController而不是UITableViewController

MyTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

步骤2:使用界面构建器删除tableView和自定义视图

步骤3:在IBOutlet头文件中将tableView属性声明为MyTableViewController,并将其绑定到界面构建器中的tableView

恕我直言,这个过程会给你更多的灵活性。