UITableViewCell で文字が入れ替わる!の対処

UITableViewCell で、画面をスクロールすると他のセルの内容と入れ替わってしまう場合があります。

そうした現象が発生すると思われるのは大体が
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
に、こんな風に書いていると思います。

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if ( cell == nil ) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

CellIdentifier に同じ "Cell" というのが入っていて、文字が入れ替わるんじゃないのかと推測(テキトーだなー)
それなら、それぞれに違う値を入れてやります。
例えば、Cell が 10個あった場合、for とかで 10回まわして 10個用意してしまえ!という感じで、こうかな。

NSMutableArray *identifiers = [NSMutableArray array];
for ( int i = 1; i <= 10; i++ ) {
        [identifiers addObject:[NSString stringWithFormat:(@"cell%d"), i]];
}
NSString *CellIdentifier = [identifiers objectAtIndex:[indexPath section]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if ( cell == nil ) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Appshocker

HonyaClub.com

リンクシェア アフィリエイト紹介プログラム