UITableView, warna separator tempat untuk mengatur?


162

Saya telah menambahkan UITableViewdalam IB dan mengatur "delegasi" dan "sumber data" dan semuanya bekerja dengan baik. Apa yang ingin saya lakukan selanjutnya adalah mengubah warna pemisah, tetapi satu-satunya cara saya bisa menemukan untuk melakukan ini adalah menambahkan metode ke salah satu panggilan balik delegasi, apakah ada tempat yang lebih baik saya harus meletakkan ini?

Saya tidak memiliki ini saat ini tetapi saya berpikir bahwa mungkin saya perlu menambahkan "iVar" dari pengontrol saya yang dapat saya tautkan ke UITableViewdalam IB dan kemudian mengatur warna pemisah di viewDidload?

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

Menambahkan variabel dan mengaitkannya di IB adalah cara saya selalu melakukannya.
s1mm0t

Itulah yang saya pikirkan. Saya melakukan tutorial yang tidak mereka gunakan dan iVar, mereka hanya mengandalkan delegasi dan panggilan balik sumber data. Namun mereka tidak pernah mengakses warna pemisah jadi mungkin itu sebabnya.
fuzzygoat

Jawaban:


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

Saya harap ini membantu - Anda akan memerlukan self.untuk mengaksesnya, ingat.

Cepat 4.2

tableView.separatorColor = UIColor.red

Hai Helen, apakah itu mengaksesnya tanpa perlu menambahkan @ properti, sepertinya itu?
fuzzygoat

1
Ini benar. Anda subclassing UITableViewController, yang menyatakannya sebagai properti. Karena itu mewarisi metode accessor / setter dari superclass, sehingga Anda dapat mengaturnya sesuai. Namun, Anda tidak dapat mengakses variabel instan secara langsung (mungkin hal yang baik). Alasan mengapa Anda dapat mengaturnya dalam metode delegasi adalah karena itu adalah parameter untuk metode yang disebut.
Helen

2
Atau jika Anda suka: self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
Bukan bagian dari jawabannya, tetapi menambahkan [super viewDidLoad];potongan kode akan menyenangkan.
totocaster

57

Sekarang Anda harus dapat melakukannya langsung di IB.

Namun tidak yakin, apakah ini tersedia ketika pertanyaan awalnya diposting.

masukkan deskripsi gambar di sini


24

Swift versi:

override func viewDidLoad() {
    super.viewDidLoad()

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

1
Ini menunjukkan saya kesalahan 'separatorColor' is unavailablepada tvOS.
Pisang

12

Coba + (instancetype) tampilan UITableView:

Tujuan-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"

Catatan: Perubahan akan mencerminkan semua tabel yang digunakan dalam aplikasi.


3

Jika Anda hanya ingin mengatur warna yang sama untuk setiap pemisah dan warnanya buram, Anda dapat menggunakan:

 self.tableView.separatorColor = UIColor.redColor()

Jika Anda ingin menggunakan warna yang berbeda untuk pemisah atau menghapus warna pemisah atau menggunakan warna dengan alfa.

HATI-HATI: Anda harus tahu bahwa ada backgroundView di separator yang memiliki warna default.

Untuk mengubahnya Anda dapat menggunakan fungsi ini:

    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
        }
    }

Semoga ini bisa membantu!


1
Ini menunjukkan saya kesalahan 'separatorColor' is unavailablepada tvOS.
Pisang

3

Swift 3, xcode versi 8.3.2, storyboard-> pilih meja Anda Lihat-> inspektur-> Pemisah.

Swift 3, xcode versi 8.3.2

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.