uitableview的自定义子类的问题

时间:2010-12-02 22:41:46

标签: uitableview ios

我正在编写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]没有崩溃,但数据源永远不会被设置。有没有人有任何想法?感谢

2 个答案:

答案 0 :(得分:2)

我最终不需要使用此问题中提出的方法,但我确实让它工作了。问题是我偶然合成了需要覆盖的属性,即dataSource和delegate。

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

答案 1 :(得分:0)

不要将数据源分配给self。创建一个包含在CustomTableView中的中间对象,并将数据源设置为该对象。称之为DataSourceInterceptor或其他东西。

实现此目标的另一种方法是方法调用正在设置的数据源对象。