UITableView
独自のカスタムで拡張するクラスを作成しようとしていますDataSource
。
クラスはと呼ばれSHCTableView
ます。
最初に、SHCTableViewDataSource.h
を拡張するというプロトタイプクラスを作成しましたNSObject
。
SHCTableView.h
次に、プロパティを次のように追加します。
// the object that acts as the data source for this table
@property (nonatomic, assign) id<SHCTableViewDataSource> dataSource;
警告が表示されます
Property type 'id<SHCTableViewDataSource>' is incompatible with type 'id<UITableViewDataSource>' inherited from 'UITableView'
とでSHCTableView.m
const float SHC_ROW_HEIGHT = 50.0f;
-(void)refreshView {
// set the scrollview height
_scrollView.contentSize = CGSizeMake(_scrollView.bounds.size.width, [_dataSource numberOfRows] * SHC_ROW_HEIGHT);
// add the cells
for (int row=0; row < [_dataSource numberOfRows]; row++) {
// obtain a cell
UIView* cell = [_dataSource cellForRow:row];
// set its location
float topEdgeForRow = row * SHC_ROW_HEIGHT;
CGRect frame = CGRectMake(0, topEdgeForRow, _scrollView.frame.size.width, SHC_ROW_HEIGHT);
cell.frame = frame;
// add to the view
[_scrollView addSubview:cell];
}
}
#pragma mark - property setters
-(void)setDataSource:(id<SHCTableViewDataSource>)dataSource {
_dataSource = dataSource;
[self refreshView];
}
のすべてのインスタンスで_dataSource
エラーが発生します。
Instance variable '_dataSource' is private
他にもたくさんのエラーがありますが、これらはすべてプライベートであるという事実が原因であると思われます_dataSource
。これはおそらく上記の警告に関連しています。
どんな助けでも大歓迎です。