2

このコードでそのエラーが発生しています。理由を理解するのを手伝ってもらえますか。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomerCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    Restaurant *restaurant = [self.restaurants objectAtIndex:[indexPath row]];
    [[cell textLabel] setText:[NSString stringWithFormat:@"%@ %@",restaurant.Name,restaurant.Address]];
    return cell;
}
4

1 に答える 1

3

コードの問題は、dequeueReusableCellWithIdentifier:常に有効なセルが返されるとは限らないことです。時々、それは戻りますnil。このような場合、セルの新しいインスタンスを割り当ててから、通常の方法で初期化する必要があります。現在のところ、メソッドnilから返された場合、メソッドは返されdequeueReusableCellWithIdentifier:ます。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyle1 reuseIdentifier:CellIdentifier];
}
于 2012-07-24T03:04:17.533 に答える