2010-07-29 107 views
130

我在IB中增加了一個UITableView,並設置了「委託」和「數據源」,並且一切正常。接下來我想做的是改變分隔符的顏色,但是我能找到的唯一方法就是將方法添加到其中一個代理回調函數中,是否有更好的地方我應該這樣做?UITableView,分隔符顏色在哪裏設置?

我目前沒有這個,但我在想,也許我需要從我的控制器添加一個「iVar」,我可以鏈接到IB中的UITableView,然後在viewDidload中設置分隔符顏色?

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

添加變量並將其掛在IB中是我總是這樣做的。 – s1mm0t 2010-07-29 16:52:49

+0

那就是我在想什麼。我正在做一個他們沒有使用的教程和iVar,他們只是依靠委託和數據源回調。然而,他們從來沒有訪問分隔符顏色,所以也許這就是爲什麼 – fuzzygoat 2010-07-29 17:09:23

回答

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

我希望幫助 - 你需要的self.訪問它,記住。

+0

嗨海倫,沒有需要添加@property訪問它,它看起來像嗎? – fuzzygoat 2010-07-29 18:30:45

+1

這是真的。您是UITableViewController的子類,它將其聲明爲屬性。因此它繼承了超類的訪問器/設置器方法,因此您可以相應地進行設置。但是,你不能直接訪問實例變量(可能是件好事)。您可以在委託方法中設置它的原因是因爲它是所調用方法的參數。 – Helen 2010-07-29 19:06:53

+1

或者如果你喜歡:self.tableView.separatorColor = UIColor.clearColor; – bbrame 2013-09-10 17:52:20

48

現在你應該可以直接在IB中完成它。

不確定,但如果這個問題在最初發布時可用。

enter image description here

+1

謝謝,像使用Xcode 6.1的魅力一樣工作。 – 2014-12-24 11:02:33

18

斯威夫特版本:

override func viewDidLoad() { 
    super.viewDidLoad() 

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

這顯示我tvOS上出現''separatorColor'不可用'的錯誤。 – Banana 2015-11-20 15:42:19

2

如果你只是想設置相同的顏色到每一個分離器,它是不透明的,你可以使用:

self.tableView.separatorColor = UIColor.redColor() 

如果您想要爲分隔符使用不同的顏色或清除分隔符顏色或使用帶有alpha的顏色。

小心:您必須知道在具有默認顏色的分隔符中存在backgroundView。

要改變它,你可以使用這個功能:

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

希望它能幫助!

+1

這給我看tvOS上''separatorColor'不可用'的錯誤。 – Banana 2015-11-20 15:42:24

7

嘗試+(instancetype)外觀的UITableView的:

目的-C:

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

夫特3.0:

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

注意:更改將反映到應用程序中使用的所有表。

1

Swift 3,xcode 8.3.2版,storyboard->選擇你的表View-> inspector-> Separator。

Swift 3, xcode version 8.3.2

相關問題