0

この質問は cellForRowAtIndexPath に関するものです。

私が知っているように、正しい方法は

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"];
return cell;

しかし、Master-Detail テンプレートを作成すると、コードは次のようになります

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
 [self configureCell:cell atIndexPath:indexPath];
 return cell;
}

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
 NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
 cell.textLabel.text = [[object valueForKey:@"timeStamp"] description];
}

編集: 問題は configureCell atIndexPath に関するものではありません。ご覧のとおり、これらの文字列は XCode テンプレートにはありません。

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault      reuseIdentifier:cellIdentifier] ;

XCode テンプレートは正しいですか?

4

1 に答える 1

4

テンプレートコードは正しいです。

iOS 5.0 から、セル ID の nib を登録できるようになりました。テーブルがセルを必要とし、再利用可能なセルが残っていないときはいつでも、ペン先をインスタンス化し、それ自体でセルを作成します。

その場合、dequeueReusableCellWithIdentifier:常にセルが返されます。自分で作成する必要はありません。

nib を登録する API は次のとおりregisterNib:forCellReuseIdentifier:です。

于 2012-07-29T13:21:00.790 に答える