UITableView, Ayırıcı rengi nerede ayarlanır?


162

Ben bir UITableViewIB ekledim ve "delege" ve "veri kaynağı" ayarlayın ve her şey iyi çalışıyor. Daha sonra yapmak istediğim ayırıcı rengini değiştirmekti, ancak bunu yapmanın tek yolu yöntemi temsilci geri çağrılarından birine eklemekti, bunu daha iyi bir yer koymalıyım?

Ben şu anda bu yok ama belki ben bağlanabilirsiniz benim denetleyicisinden bir "Ivar" eklemeniz gerekir düşünüyordum UITableViewsonra ayarlanan ayırıcı rengi IB ve viewDidload?

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

Değişkeni eklemek ve onu IB'de bağlamak her zaman böyle yaptım.
s1mm0t

Düşündüğüm şey buydu. Kullanmadıkları bir öğretici ve iVar yapıyordum, sadece delege ve veri kaynağı geri çağrılarına güveniyorlardı. Ancak ayırıcı renge hiç erişmediler, bu yüzden belki de bu yüzden.
fuzzygoat

Yanıtlar:


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

Umarım bu yardımcı olur - self.ona erişmek için ihtiyacınız olacak, unutmayın.

Hızlı 4.2

tableView.separatorColor = UIColor.red

Merhaba Helen, @property eklemeye gerek kalmadan erişiyor mu, öyle görünüyor mu?
fuzzygoat

1
Bu doğru. Bunu bir özellik olarak bildiren UITableViewController alt sınıflaması vardır. Bu nedenle üst sınıfın erişimci / ayarlayıcı yöntemlerini devralır, böylece buna göre ayarlayabilirsiniz. Ancak, örnek değişkenine doğrudan erişemezsiniz (muhtemelen iyi bir şeydir). Temsilci yönteminde ayarlayabilmenizin nedeni, çağrılan yöntemin bir parametresi olmasıdır.
Helen

2
Veya isterseniz: self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
Özellikle cevabın bir parçası değil [super viewDidLoad];, kod snippet'ine eklemek güzel olurdu.
totocaster

57

Şimdi bunu doğrudan IB'de yapabilmelisiniz.

Yine de, soru orijinal olarak gönderildiğinde mevcut olup olmadığından emin değilim.

resim açıklamasını buraya girin


24

Hızlı sürüm:

override func viewDidLoad() {
    super.viewDidLoad()

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

1
Bu bana 'separatorColor' is unavailabletvOS'ta bir hata gösteriyor .
Muz

12

UITableView'ın + (instancetype) görünümünü deneyin :

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

Not: Değişiklik, uygulamada kullanılan tüm tabloları yansıtacaktır.


3

Aynı rengi her ayırıcıya ayarlamak istiyorsanız ve opaksa kullanabilirsiniz:

 self.tableView.separatorColor = UIColor.redColor()

Ayırıcılar için farklı renkler kullanmak veya ayırıcı rengini temizlemek veya alfa içeren bir renk kullanmak istiyorsanız.

DİKKATLİ OLUN: Ayırıcıda varsayılan renge sahip bir backgroundView olduğunu bilmelisiniz.

Değiştirmek için bu işlevleri kullanabilirsiniz:

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

Umarım yardımcı olur!


1
Bu bana 'separatorColor' is unavailabletvOS'ta bir hata gösteriyor .
Muz

3

Swift 3, xcode sürüm 8.3.2, film şeridi-> tablonuzu seçin Görünüm-> denetçi-> Ayırıcı.

Swift 3, xcode sürüm 8.3.2

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.