2012-08-16 30 views
27

Tôi có UITableView tĩnh và mọi thứ được trình bày trên Bảng phân cảnh. Trong cellForRowAtIndexPath tôi chỉ cần sử dụngUITableView với các ô tĩnh không có cellForRowAtIndexPath. Làm thế nào để thiết lập nền tảng rõ ràng?

return [super tableView:tableView cellForRowAtIndexPath:indexPath]; 

và chế độ xem bảng hoạt động tuyệt vời. Tuy nhiên tôi muốn đặt các ô nền thành [UIColor clearColor] Tôi có thể làm như thế nào? Bảng có 30 ô, mỗi ô khác nhau.

Cảm ơn

Trả lời

56

Tôi không hoàn toàn chắc chắn nếu điều này sẽ làm việc, bởi vì tôi chưa bao giờ cố gắng sử dụng super để quản lý các tế bào. Nếu mã của bạn làm việc với super, sau đó bạn sẽ có thể nhận được ngay với làm điều này để thiết lập màu nền:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; 
    cell.backgroundColor = [UIColor clearColor]; 
    return cell; 
} 

Dù bằng cách nào, điều này dường như với tôi như một cách kỳ lạ để làm việc. Thông thường các ô được tạo và tái sử dụng trong chính phương thức đó, theo mã mặc định UITableView boiletplate, mà không cần gọi super.

+2

Cảm ơn, điều này đã làm việc rất tốt. Vì bảng rất dài và mọi ô hoàn toàn khác nhau và tĩnh, tôi thấy dễ dàng hơn khi chỉ đặt tất cả chúng trong Storyboard và tạo IBOutlet's cho tất cả UILabels cần dữ liệu. – Darren

+0

@ Jonathan cảm ơn –

+0

Cảm ơn! Bạn đã lưu trong ngày! –

1

Bạn có thể thiết lập một phương pháp và gọi nó trong viewDidLoad của bạn để nhận được tất cả các tế bào và làm bất cứ điều gì bạn muốn với họ, bạn có thể sử dụng này:

NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows]; 

Để có được tất cả những con đường chỉ số của các tế bào hiện có thể xem

sau đó lặp qua chúng theo cách sau

UITableViewCell *cell = nil; 
for (int i = 0; i < 30; i++) { 
    cell = [self.tableView cellForRowAtIndexPath:[visibleIndexPaths objectAtIndex:i]]; 
    // Do your setup 
} 

Bạn cũng có thể tham khảo this Apple developer document phần "Các kỹ thuật cho tĩnh Row Content"

+0

Phương pháp này không hiệu quả, nhưng nhờ cho câu trả lời. – Darren

+0

Không vấn đề gì, bây giờ tôi có thể cấu trúc lại mã của mình để được tốt hơn – 8vius

17

Hãy thử phương pháp này đại biểu:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
cell.backgroundColor = [UIColor clearColor]; 
} 
+0

Phương pháp này đã hoạt động, cảm ơn. Tuy nhiên tôi đã chọn câu trả lời của jon là câu trả lời đúng vì nó có vẻ là địa điểm chính xác để đặt ô. Cảm ơn – Darren

+1

Câu trả lời được chấp nhận hoạt động nhưng không cần thiết và phức tạp. 'willDisplayCell:' là đơn giản hơn nhiều và hoàn toàn phù hợp cho trường hợp sử dụng. –

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