-1

セルに2つのサブビュー(ラベル付きの小さなサムネイル)を持つテーブルビューがあり、ロードするものが何もない場合(最初のサブビューのみにロードする画像とタイトルがある場合)、2番目のサブビューを非表示にします。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *reuse = @"reuse";
    ContentTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
    if (cell == nil) {
        cell = [[[NSBundle mainBundle] loadNibNamed:[Utils buildNibNameFromPrefix:@"ContentTableViewCell"] owner:self options:nil] objectAtIndex:0];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    cell.cellIndex = indexPath.row;

    NSUInteger selectedIndex = [Utils getIndexForContentTitle:[Utils getContentBookmark]];
    NSUInteger titleIndex = indexPath.row * self.noOfContentPerCell;
    NSUInteger cellIndex = NSNotFound;
    for (int i = 0; i < self.noOfContentPerCell; i++) {
        @try {
            if (titleIndex == selectedIndex) {
                cellIndex = i;
            }

            NSArray *content;
            if ([[NSUserDefaults standardUserDefaults] boolForKey:@"unlock"] == NO) {
                content = CONTENT_INDEXS;
            }
            else {
                content = CONTENT_INDEXS_UNLOCKED;
            }

            NSString *title = [content objectAtIndex:titleIndex];
            [cell setTitle:title forContentAtIndex:i];

            NSString *thumbnail;

            if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone )
            {
                thumbnail = [NSString stringWithFormat:@"%@-iphone-thumbnail.jpg", title];
            }
            else
            {
                thumbnail = [NSString stringWithFormat:@"%@-ipad-thumbnail.jpg", title];
            }

            [cell setImageNamed:thumbnail atIndex:i];

            [cell showContainerAtIndex:i];
        }
        @catch (NSException *exception) {
            [cell hideContainerAtIndex:i];
        }
        titleIndex++;
    }

    return cell;
}

ロードするコンテンツがない場合、@catch はこのサブビューを非表示にしますが、iOS 5 では次の場所でクラッシュが発生します。

NSString *title = [content objectAtIndex:titleIndex];
4

1 に答える 1

7

これはばかげているようです。・やむを得ない場合を除き
、普段は嫌いです。-そのコレクションに が存在する かどうかを確認してみませんか。 - つまり、発生するかどうかではなく、発生する条件を調べて対処します。Try/Catch
index
errorerror

于 2013-02-20T02:07:29.923 に答える