UITableView, Dấu phân cách màu đặt ở đâu?


162

Tôi đã thêm một UITableViewIB và đặt "đại biểu" và "nguồn dữ liệu" và tất cả đều hoạt động tốt. Điều tôi muốn làm tiếp theo là thay đổi màu của dấu phân cách, nhưng cách duy nhất tôi có thể tìm thấy để làm điều này là thêm phương thức vào một trong các cuộc gọi lại của đại biểu, liệu có nên đặt nơi này tốt hơn không?

Tôi không có điều này vào lúc này nhưng tôi đã nghĩ rằng có lẽ tôi cần thêm một "iVar" từ bộ điều khiển của mình để tôi có thể liên kết với UITableViewIB và sau đó đặt màu phân cách trong viewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}

Thêm biến và nối nó trong IB là cách tôi luôn thực hiện.
s1mm0t

Đó là thứ tôi đã từng nghĩ đến. Tôi đang làm một hướng dẫn mà họ không sử dụng và iVar, họ chỉ dựa vào các cuộc gọi lại của đại biểu và nguồn dữ liệu. Tuy nhiên, họ không bao giờ truy cập màu phân cách để có thể đó là lý do tại sao.
fuzzygoat

Câu trả lời:


335
- (void)viewDidLoad
{
   [self.tableView setSeparatorColor:[UIColor myColor]];
}

Tôi hy vọng điều đó có ích - bạn sẽ cần self.truy cập nó, hãy nhớ.

Swift 4.2

tableView.separatorColor = UIColor.red

Xin chào Helen, có truy cập nó mà không cần thêm @property không, có vẻ như nó không?
fuzzygoat

1
Đây là sự thật. Bạn đang phân lớp UITableViewControll, khai báo nó là một thuộc tính. Do đó, nó kế thừa các phương thức accessor / setter của siêu lớp, vì vậy bạn có thể thiết lập nó cho phù hợp. Tuy nhiên, bạn không thể truy cập trực tiếp vào biến thể hiện (có thể là một điều tốt). Lý do tại sao bạn có thể đặt nó trong một phương thức ủy nhiệm là vì nó là một tham số cho phương thức được gọi.
Helen

2
Hoặc nếu bạn thích: self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
Không phải là một phần của câu trả lời, nhưng thêm [super viewDidLoad];vào đoạn mã sẽ rất hay.
totocaster

57

Bây giờ bạn sẽ có thể làm điều đó trực tiếp trong IB.

Mặc dù không chắc chắn, nếu điều này có sẵn khi câu hỏi được đăng ban đầu.

nhập mô tả hình ảnh ở đây


24

Phiên bản Swift :

override func viewDidLoad() {
    super.viewDidLoad()

    // Assign your color to this property, for example here we assign the red color.
    tableView.separatorColor = UIColor.redColor()
}

1
Điều này cho tôi thấy một lỗi 'separatorColor' is unavailabletrên tvOS.
Chuối

12

Hãy thử xuất hiện + (instancetype) của UITableView:

Mục tiêu-C:

[[UITableView appearance] setSeparatorColor:[UIColor blackColor]]; // set your desired colour in place of "[UIColor blackColor]"

Swift 3.0:

UITableView.appearance().separatorColor = UIColor.black // set your desired colour in place of "UIColor.black"

Lưu ý: Thay đổi sẽ phản ánh đến tất cả các bảng được sử dụng trong ứng dụng.


3

Nếu bạn chỉ muốn đặt cùng một màu cho mỗi dấu phân cách và nó mờ thì bạn có thể sử dụng:

 self.tableView.separatorColor = UIColor.redColor()

Nếu bạn muốn sử dụng các màu khác nhau cho dải phân cách hoặc xóa màu dải phân cách hoặc sử dụng màu với alpha.

HÃY CẨN THẬN: Bạn phải biết rằng có một hình nền trong dải phân cách có màu mặc định.

Để thay đổi nó, bạn có thể sử dụng các chức năng này:

    func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var headerView = view as! UITableViewHeaderFooterView;
            headerView.backgroundView?.backgroundColor = myColor

           //Other colors you can change here
           // headerView.backgroundColor = myColor
           // headerView.contentView.backgroundColor = myColor
        }
    }

    func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var footerView = view as! UITableViewHeaderFooterView;
            footerView.backgroundView?.backgroundColor = myColor
           //Other colors you can change here
           //footerView.backgroundColor = myColor
           //footerView.contentView.backgroundColor = myColor
        }
    }

Hy vọng nó giúp!


1
Điều này cho tôi thấy một lỗi 'separatorColor' is unavailabletrên tvOS.
Chuối

3

Swift 3, xcode phiên bản 8.3.2, bảng phân cảnh-> chọn bảng của bạn Xem-> thanh tra-> Dấu phân cách.

Swift 3, xcode phiên bản 8.3.2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.