2010-09-14 32 views
9

Tôi có một số UITableView sử dụng nhiều tùy chỉnh UITableViewCells.Thay đổi bộ tách UITableViewColor cho một UITableViewCell duy nhất

Tôi muốn có thể có một trong các ô trong bảng này xuất hiện với màu phân cách khác với màu còn lại của các ô khác.

Tôi biết rằng tableview.seperatorColor cập nhật toàn bộ tableView. Có một tài sản cụ thể của tế bào tôi thiếu hoặc cách tiếp cận khác để làm điều này?

Cảm ơn mọi mẹo. Xin lỗi nếu tôi chỉ là khoảng cách trên một cái gì đó trong lớp UITableViewCell.

Trả lời

9

Tuyên bố từ chối - điều này làm việc cho tôi tại thời điểm trong các trường hợp cụ thể của tôi. Nó không được bảo đảm để làm việc, nó dường như không còn hoạt động nữa, và bây giờ tôi khuyên bạn nên phân lớp UITableViewCell.

Đến ngang qua bài đăng này khi tìm cách đặt UITableView.separatorColor khác nhau giữa các nhóm/phần trong một nhóm UITableView.

Bạn không nhất thiết cần phải phân loại UITableViewCell. Bạn có thể thử đặt tableView.separatorColor trên mỗi cuộc gọi thành tableView:cellForRowAtIndexPath:. Ví dụ: nếu bạn muốn dấu phân cách hiển thị với màu mặc định trong phần đầu tiên, hiển thị trong hàng/ô đầu tiên của phần thứ hai và ẩn trong phần còn lại của các hàng trong phần thứ hai, bạn có thể làm như sau:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
switch (indexPath.section) { 
    case 0: 
     tableView.separatorColor = nil; 
     break; 
    case 1: 
     switch (indexPath.row) { 
      case 0: 
       tableView.separatorColor = nil; 
       break; 
      case 1: 
       tableView.separatorColor = [UIColor clearColor]; 
       break; 
      default: 
       break; 
     } 
     break; 
    default: 
     break; 
} 
+0

Rất thú vị. Tôi đánh giá cao việc bạn cập nhật điều này. Tôi đã kết thúc việc thiết lập các máy tách riêng của mình trong phòng giam nhưng điều này có vẻ rất hứa hẹn và tôi sẽ chụp. Tôi đoán giá trị được kiểm tra mỗi khi một uitablecell đang được thiết lập anyway vì vậy không có tác động perf chỉ đơn giản là thay đổi nó. – Nick

+0

Đã có dịp phải đối mặt với vấn đề này một lần nữa trong một lần xem bảng khác.Cách tiếp cận này hoạt động và tránh phải vẽ dấu phân cách riêng cho mỗi ô. – Nick

+6

Tính năng này không hoạt động đối với tôi trong iOS SDK 4.3. Khi tôi thử nó, các dấu phân cách nhấp nháy khi tôi di chuyển và kết thúc ngẫu nhiên hiển thị khi tôi ngừng cuộn. –

7

tableView.separatorColor là toàn cầu trên tất cả các ô.

Nếu bạn muốn tùy chỉnh thêm các màu này, đặt cược tốt nhất của bạn sẽ là đặt separatorStyle thuộc tính thành UITableViewCellSeparatorStyleNone và ghi đè UITableViewCell.

Sau đó, bạn có thể vẽ người tùy chỉnh của riêng mình trong contentView của Cell và tùy chỉnh nó.

3

Bắt đầu từ iOS 7 một cái gì đó như thế này dường như được làm việc tốt:

  1. Đặt UITableViewCellSeparatorStyleSingleLine trên UITableView bạn
  2. Đối với các tế bào mà bạn muốn thay đổi màu tách đầu tiên ẩn tách bằng cách thay đổi insets cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 10000);
  3. Thay đổi màu nền của các tế bào nên có màu sắc khác nhau tách cell.backgroundColor = [UIColor greenColor];

Bây giờ tách sẽ có màu sắc giống như backgroundcolor của tế bào của bạn. Lưu ý rằng tất cả điều này có thể được đặt trên tệp xib của ô mà không có bất kỳ mã nào. Cũng lưu ý rằng bạn có thể muốn thay đổi màu nền của contentView thành một thứ khác với mặc định (có thể là màu trắng) để màu xanh lục sẽ chỉ xuất hiện trên đường phân cách.

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