假设您实现了一个自定义表格视图和一个自定义视图控制器(它主要模仿UITableViewController
s 的行为,但是当以编程方式初始化时,...
@interface Foo : MyCustomTableViewController ...
Foo *foo = [[Foo alloc] init];
...foo.view
是一种类,MyCustomTableView
而不是UITableView
:
// MyCustomTableView.h
@protocol MyTableViewDelegate <NSObject, UITableViewDelegate>
// ...
@end
@protocol MyTableViewDataSource <NSObject, UITableViewDataSource>
// ...
@end
@interface MyCustomTableView : UITableView
// ...
@end
// MyCustomTableViewController.h
@interface MyCustomTableViewController : UIViewController
// ...
@end
您应该如何init
以正确的顺序/方式实现/覆盖方法,以便您可以通过以编程方式进行子类化或通过在 Interface Builder 中将自定义类类型设置为任何自定义 nib 文件来创建和使用MyCustomTableView
这两种方法的实例?MyCustomTableViewController
MyCustomTableView
需要注意的是,这正是目前UITableView
(主要是 UIKit)的工作方式:开发人员可以通过编程方式或从 nib 创建和使用,无论是File owner
主view
视图还是更复杂层次结构中的某个子视图,只需分配数据源或委托,你很高兴......
到目前为止,如果您子类化,我设法让它工作,我将在MyCustomTableViewController
其中创建一个实例MyCustomTableView
并将其分配给方法;但无法弄清楚, , , , 或其他任何操作方式。我迷失在生命周期链中,每次都以黑色视图/屏幕结束。self.view
loadView
initWithNibName:bundle:
initWithCoder:
awakeFromNib
awakeAfterUsingCoder:
谢谢。