UITableView,分隔符颜色在哪里设置?


162

UITableView在IB中添加了一个,并设置了“代理”和“数据源”,并且一切正常。我接下来要做的是更改分隔符的颜色,但是我能找到的唯一方法是将方法添加到一个委托回调中,有没有更好的放置位置?

我目前没有这个,但是我在想,也许我需要从控制器中添加一个“ iVar”,以便可以链接到UITableViewIB中的,然后在viewDidload?中设置分隔符颜色。

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

添加变量并将其连接到IB是我一直以来的工作方式。
s1mm0t

那就是我在想的。我正在做一个他们不使用和iVar的教程,他们只是依靠委托和数据源回调。但是他们从未访问过分隔符的颜色,所以也许这就是原因。
Fuzzygoat 2010年

Answers:


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

希望对您self.有所帮助-请记住,您需要使用它。

斯威夫特4.2

tableView.separatorColor = UIColor.red

嗨,海伦,是否不需要添加@property就可以访问它,看起来像吗?
Fuzzygoat 2010年

1
这是真的。您在继承UITableViewController,将其声明为属性。因此,它继承了超类的访问器/设置器方法,因此您可以进行相应的设置。但是,您不能直接访问实例变量(可能是一件好事)。之所以可以在委托方法中进行设置,是因为它是所调用方法的参数。
海伦

2
或者,如果您喜欢:self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
并非特别是答案的一部分,但将其添加[super viewDidLoad];到代码段中会很好。
totocaster

57

现在,您应该可以直接在IB中进行此操作。

但是,不确定是否可以在最初发布问题时使用。

在此处输入图片说明


24

迅捷版:

override func viewDidLoad() {
    super.viewDidLoad()

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

1
这显示了我'separatorColor' is unavailable在tvOS上的错误。
香蕉

12

尝试使用UITableView的+(实例类型)外观

目标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"

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


3

如果您只想为每个分隔符设置相同的颜色,并且它是不透明的,则可以使用:

 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
这显示了我'separatorColor' is unavailable在tvOS上的错误。
香蕉

3

Swift 3,xcode版本8.3.2,情节提要->选择表View-> inspector-> Separator。

Swift 3,xcode版本8.3.2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.