質問

この問題を解決するアイデアがありますか?

これは 正確で間違った方法 敬意:
alt text alt text

これは動作コードです:

- (UITableViewCell *)[...] cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    @try {
        newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
        if (newsRow == nil) {
            if ( [[Device GetModel] isEqualToString:@"iPad Simulator"] || 
                 [[Device GetModel] isEqualToString:@"iPad"])
                [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
            else [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];

            if ([tableArray count] > 0)
                [newsRow setData:[tableArray objectAtIndex:indexPath.row]];
        }       
    }
    @catch (NSException * e) {
        NSLog(@"a!!!!!");
    }
    return newsRow;
}

...しかし、私の3Gデバイスではそうです ゆっくり テーブルを上下にスクロールするとき この方法でコードを変更し、viewdidloadにデバイスチェックを挿入して渡す cellForRowAtIndexPath:

NSArray *cRow;
@property (nonatomic, retain) NSArray *cRow;
[...]
@syntetize cRow;

- (void)viewDidLoad {
[...]
    if ( [[Device GetModel] isEqualToString:@"iPad Simulator"] 
        || 
        [[Device GetModel] isEqualToString:@"iPad"])
        cRow  = [[[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil] retain];
        else cRow = [[[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil] retain];
[...]
}

- (UITableViewCell *)[...] cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    @try {
        newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
        if (newsRow == nil) {

            //
            // ADDED CODE.
            //
            newsRow = [cRow objectAtIndex:0];    
            //

            if ([tableArray count] > 0)
                [newsRow setData:[tableArray objectAtIndex:indexPath.row]];
        }       
    }
    @catch (NSException * e) {
        NSLog(@"a!!!!!");
    }
    return newsRow;
}

今、テーブルは私に列だけを見せてくれます。スクロールすると、行が変更されますが、1つの行のみが表示されます...
alt text
どうしたの?

何か助けがありますか?

ありがとう、
a

役に立ちましたか?

解決

この場合、DequeuereUsableCellWithIdentifierに電話すると、デキュートできるセルがないため、NILを後退させます。 NILセルを戻すたびにペン先をロードする必要があります。そうしないと、最初のセルの後にテーブルにセルに追加することはありません。

GetModelを呼び出すことが遅くなっている場合、ViewDidLoadでそれを呼び出して、後で使用するために保存することができます。

おそらく、各セルに描画しているビューの量のために、テーブルがスムーズにスクロールしていない可能性があります。あなたの背景が常に固体色である場合は、あなたがセルまたは不透明に追加しているすべてのビューを確認する必要があります。画像またはグラデーションの背景が必要な場合は、セルをすべて1つのビューで描画することを検討する必要があります。 Appleにはここでこれを行う方法の良い例があります: TableViewSuite. 。具体的には、TimeZoneViewファイルをチェックアウトします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top