我正在编写UITableView的自定义子类。我将需要此对象本身作为其自己的数据源和委托,然后该子类将具有自己的数据源和委托。这样做主要是为了使我可以拦截对数据源的调用并委派,并有可能在将其发送到实际数据源之前对其进行扩展。

我的课是这样定义的。

CustomTableView : UITableView<UITableViewDelegate, UITableViewDataSource> {
   ...
   id customDataSource;
   id customDelegate;
}

当我尝试设置数据源和委托时出现问题。

我想重写uitableview的属性:
- (void)setDataSource(id<UITableViewDataSource>)ds {
   [super setDataSource:self]
   customDataSource = ds;
}

基本上,我想告诉父类(UItableView)将数据源设置为self。修改完之后,我会将所有回调转发到customDataSource。

[super setDataSource:self]不会崩溃,但是数据源永远不会被设置。有人有什么想法吗?谢谢

最佳答案

我最终不需要使用此问题中提出的方法,但是确实可以使用它。问题是我意外地综合了需要覆盖的属性,即dataSource和委托。

对于将来需要这样做的人,只需在自定义子类中重写setDelegate和setDataSource。

10-07 19:13