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;
}
fuzzygoat
sumber
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
Helen
sumber
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

Myxtic
sumber
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()
}
Raja-Penyihir
sumber
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.

Nitesh Borad
sumber
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!

ezefire
sumber
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

Giang
sumber