一个简单的问题,我正在为UITableView设置一个委托,我有一个关于设置委托和dataSource属性的问题。我注意到delegate和dataSource的属性不可用,我认为采用协议会使它们可用。但我现在认为我的委托类的超类可能错了。
目前我有:
-(void)viewDidLoad {
TestDelegate *tempDelegate = [[TestDelegate alloc] init];
[self setMyDelegate:tempDelegate];
// setDelegate
// setDataSource
[tempDelegate release];
[super viewDidLoad];
}
我的TestDelegate界面如下:
@interface TestDelegate : NSObject <UITableViewDelegate, UITableViewDataSource> {
NSArray *listData;
int myCounter;
}
我可以问上面是否应该:
@interface TestDelegate : UITableView <UITableViewDelegate, UITableViewDataSource> {
NSArray *listData;
int myCounter;
}
加里
编辑:我认为它可能在正确的轨道上:我的委托superClass应该是NSObject,我在Interface Builder中也有一个UITableView。
我添加了@property(非原子,保留)IBOutlet UITableView * myTableView;在Xcode中并将其连接到IB中的UITableView。我现在可以通过IBOutlet访问Xcode中的delegate和dataSource属性。
答案 0 :(得分:3)
否,子类化 UITableView
与仅仅符合UITableViewDelegate
或UITableViewDatasource
协议之间存在差异。
如果您需要在表视图中使用不同的行为,则需要子类化UITableView
。 - &GT; 大部分时间你都不想这样做。
UITableView
具有delegate
和dataSource
属性,您可以将其分配给符合相应协议的对象。
如果您想要对delegate
和dataSource
属性进行顶级访问,则需要将UITableViewController
子类化。(不符合如果您继承UITableViewController
)