2010-07-29 106 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

相关问题