iOS6 ではこの問題は発生しませんでしたが、現在 iOS7 で問題が発生しています。UITableView があり、ビューが読み込まれた時点で 8 つのセルが表示されます。それぞれに と 配列から異なる名前が取り込まれます。下にスクロールすると、次の 2 つのセルはきれいに見えますが、それ以降のすべてのセルはその上にテキストが配置されます。そのテキストは、前のセルにあったものの内容です。したがって、10 番目のセルには、最初のセルにあったものと、10 番目のセルにあるはずのものがその上に置かれます。
コード:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
//Create Label for Name inside cell
UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake( 7.0, 5.0, 300.0, 30.0 )];
[name setText:[self.entriesArray objectAtIndex:indexPath.row]];
//Check to see if current person is a Parent or Child
NSString *class = [self.database getCellDataWithMembership:[self.MembershipArray objectAtIndex:indexPath.row] andColIndex:4];
if([class isEqualToString:@"CHILD"])
{
name.textColor = [UIColor colorWithRed:25.0f/255.0f green:111.0f/255.0f blue:45.0f/255.0f alpha:1.0f];
name.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.0];
}
[cell.contentView addSubview:name];
return cell;
}
テーブルビューに関する私のスキルはせいぜいその場しのぎです。多くのドキュメントを読み、解決策を調査してきましたが、解決策を思いつくことができませんでした。iOS6 では完璧に動作するのに、iOS7 ではうまく動作しないのは奇妙だと思います。
したがって、配列から人の名前を取得し、セルにそれらの名前を入力したいと思います。私はもともとこれを使用してこれを達成することができました:
cell.textLabel.text = [self.entriesArray objectAtIndex:indexPath.row];
if([class isEqualToString:@"CHILD"])
{
cell.textLabel.textColor = [UIColor colorWithRed:25.0f/255.0f green:111.0f/255.0f blue:45.0f/255.0f alpha:1.0f];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.0];
最初のコード ブロックの「name」UILabel アクションの代わりにそれを使用すると、名前はテキスト オーバーレイなしで完全に表示されますが、問題になるのはテキストの色です。子としてラベル付けされている場合は、緑色のテキストで太字にする必要があります。ただし、下にスクロールした後、すべての人が緑色になるべきではないときに緑色になります。
長い質問で申し訳ありません。私はこれに取り組んでいて、頭を悩ませていますが、理解できないようです。どんな助けでも大歓迎です。