一个简单的问题是,我正在为UITableView设置一个委托,我有一个关于设置委托和dataSource属性的问题。我注意到委托和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中也有一个UITableView。
我在Xcode中添加了@property(非原子的、保留的)IBOutlet UITableView *myTableView;并将其连接到IB中的UITableView。现在,我可以通过dataSource访问Xcode中的委托和IBOutlet属性。
发布于 2010-05-11 10:18:56
No,子类 UITableView与仅仅遵从UITableViewDelegate或UITableViewDatasource协议有区别。
如果需要表视图本身中的不同行为,则需要子类UITableView。-> 大多数时候您都不想做这个。
UITableView具有delegate和dataSource属性,可以将其分配给符合各自协议的对象。
如果您想要拥有对delegate 和 dataSource 属性的顶级访问权限,则需要对 UITableViewController**.**进行子类(如果您的子类是UITableViewController,则不遵守委托协议)。
https://stackoverflow.com/questions/2809576
复制相似问题