あなたは正しい道を進んでいます。カスタムセルは他の場所で使用されているため、xib はそれをロードするのに最適な場所です。実装に関しては、このようなことができます。
テーブルビューが「静的」で 3 つのセルがあると仮定すると、カスタム nib を に登録できますviewDidLoad
。
- (void)viewDidLoad
{
[super viewDidLoad];
UINib *customCellNib = [UINib nibWithNibName:@"CustomCell" bundle:nil];
[self.tableView registerNib:customCellNib forCellReuseIdentifier:@"CustomIdentifier"]
}
次にcellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
if(indexPath.row == 0) {
cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier1"];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:@"CellIdentifier1"];
}
}
/* Cell 2 ommited for brevity */
else if(indexPath.row == 2) {
//Just to demonstrate the tableview is returning the correct type of cell from the XIB
CustomCell *customCell = [tableView dequeueReusableCellWithIdentifier:@"CustomIdentifier"];
cell = customCell;
}
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
最後に、Xib の IB でIdentifier
、セルに適切な値を設定します。
アップデート
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row == 0) {
cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
}
else {
//custom cell here
//cell.textfield.text = @"blah blah";
}
}
セルの構成メソッドは、主にNSFetchedResultsController (および使用されるデリゲート) を使用して配置されるテーブルビュー セルの規則のようなものです。
cellForRowAtIndexPath:
これは、再利用されたセルを適切な内容でリセットし、読みやすくするための便利な方法です。configureCell の複数のバージョンを作成configureCustomCell1:atIndexPath
して、読みやすさをさらに向上させています。
お役に立てれば!