2

メソッドを使用- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;して、特定のインデックス パスでセルを取得しています。- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPathテーブルのセルを表すオブジェクトを返すか、セルが表示されていない場合や indexPath が範囲外の場合は nil を返します。ただし、呼び出しを繰り返すと、- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPathNSRange 例外が発生します。その理由は何ですか?

NSIndexPath *ip = [NSIndexPath indexPathForRow:index inSection:0];
        CustomCell *cell = (CustomCell *)[tableview_ cellForRowAtIndexPath:ip];

コード

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCell *cell = nil;
static NSString *cellIdentifier = @"Cell";
cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {
    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"customcell" owner:self options:nil];
    cell = [nibs objectAtIndex:0];
}
ImageCache *imageCache = [[ImageCache alloc]initWithUrl:sentCard.sentImage];
    UIImage *cachedImage = [imageCache fetchImageFromCache];
    if (cachedImage!=nil) {
        cell.cardImage.image = [Utility scaleImageToSize:cell.cardImage.frame.size image:cachedImage];
        [cell.loadingIndicator stopAnimating];
    }
    else {
        imageCache.cacheDelegate = self;
        imageCache.cacheDuration = 24.0;
        [imageCache fetchImage];
    }
return cell;
}
4

1 に答える 1

0

まだ作成されていないセルを要求しています。たとえば、最初のセル (インデックス 0) でクラッシュするはずです。cellForRowAtIndexPathテーブルにデータが入力されたら、セル (aka ) を要求する必要があります。

于 2013-07-19T10:35:39.223 に答える