นี่เป็นวิธีที่มีประสิทธิภาพที่สุดที่ฉันได้พบเพื่อแก้ปัญหานี้ให้ใช้วิธีมอบหมาย willDisplayCell (ซึ่งจะดูแลสีขาวสำหรับพื้นหลังป้ายข้อความด้วยเช่นกันเมื่อใช้ cell.textLabel.text และ / หรือ cell.detailTextLabel.text ):
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { ... }
เมื่อวิธีการมอบหมายนี้เรียกว่าสีของเซลล์จะถูกควบคุมผ่านเซลล์แทนที่จะเป็นมุมมองตารางเช่นเดียวกับเมื่อคุณใช้:
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { ... }
ดังนั้นภายในเนื้อความของวิธีการมอบหมายเซลล์เพิ่มรหัสต่อไปนี้เพื่อสลับสีของเซลล์หรือเพียงใช้การเรียกใช้ฟังก์ชันเพื่อทำให้เซลล์ทั้งหมดของตารางมีสีเดียวกัน
if (indexPath.row % 2)
{
[cell setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
}
else [cell setBackgroundColor:[UIColor clearColor]];
โซลูชันนี้ทำงานได้ดีในสถานการณ์ของฉัน ...