2010-04-09 23 views
12

Tôi đang cố gắng đặt nền nhãnColor của UITableViewCells của tôi và nó hoàn toàn không có gì cả. Tôi tự hỏi nếu có một cách khác để làm điều này, vì vậy tôi hỏi!textLabel.backgroundColor trên UITableViewCell không hoạt động

Tôi cố gắng này:

cell.textLabel.backgroundColor = [UIColor redColor]; 
cell.backgroundColor = [UIColor redColor]; 

Và nó không hoạt động, bất cứ điều gì khác?

Cảm ơn!

Trả lời

41

Tôi cho rằng bạn đang thử điều này trong cellForRowAtIndexPath.

Theo UITableViewCell class reference:

Lưu ý: Nếu bạn muốn thay đổi màu sắc nền của một tế bào (bằng cách thiết lập màu nền của một tế bào thông qua các tài sản công bố bởi UIView backgroundColor) bạn phải làm điều đó trong bảng Xem: willDisplayCell: forRowAtIndexPath: phương pháp của đại biểu và không trong bảngXem: cellForRowAtIndexPath: của nguồn dữ liệu.

Vì vậy, làm như sau:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.textColor = [UIColor yellowColor]; //can do here OR in cellForRowAtIndexPath 
} 

Nếu bạn cần kiểm soát tốt hơn các màn hình di động, một cách dễ dàng là để thiết kế nó trong IB và tải nó từ ngòi trong cellForRowAtIndexPath. Xem phần "Tải xuống các ô xem bảng tùy chỉnh từ các tệp nib" trên this page trong Hướng dẫn lập trình xem bảng.

+1

Tuyệt vời, đang tìm kiếm ở mọi nơi cho điều này. Cảm ơn –

0

Cập nhật cho iOS 9.3. Điều này thực sự hoạt động tốt trong cellForRowAtIndexPath bằng cách sử dụng IOS 9.3. Cũng Lưu ý: Để thay đổi màu của toàn bộ việc sử dụng ô:

cell.contentView.backgroundColor = [UIColor redColor];

Các vấn đề liên quan