Swift - UITableView设置分隔符样式

时间:2015-01-03 22:27:13

标签: ios uitableview swift

如何在Swift中设置UITableView的分隔符样式?我想摆脱分隔符,以便在我的表视图中的单元格之间没有灰线。任何建议都会非常感激。我已经尝试过了。

我在Objective-C

中找到了这个方法
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]

我尽力用

将其翻译成swift
self.tableView.setSeparatorStyle = UITableViewCellSeparatorStyle.None

但这会出现错误

'(UITableView, numberOfRowsInSection: Int) -> Int' does not have a member named 'setSeparatorStyle'

在apple文档中,它在objective-C

中给出了这些声明
typedef enum : NSInteger  {


UITableViewCellSeparatorStyleNone ,
   UITableViewCellSeparatorStyleSingleLine ,
   UITableViewCellSeparatorStyleSingleLineEtched 
} UITableViewCellSeparatorStyle;

所以我再次尝试使用

将其翻译为Swift
 override func tableView(tableView: UITableView, setSeparatorStyle style: NSInteger) -> NSInteger {
    return UITableViewCellSeparatorStyleNone
}

但这只会引发更多错误,"使用未解析的标识符' UITableViewCellSeparatorStyleNone"

5 个答案:

答案 0 :(得分:30)

为了解释为什么你不能在Swift中调用setSeparatorStyle,我需要解释Objective-C中该方法的来源。如果您在标题(UITableView.h)中搜索它,则无法找到它。唯一宣布的是:

@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;

setSeparatorStyle是为Objective-C中的属性自动生成的setter。我们假设您在Objective-C中声明了一个属性,如下所示:

@interface SomeClass: NSObject

@property (nonatomic) id someProperty;

@end

Objective-C将自动为该属性生成一个setter和getter方法,其中getter是属性的名称,setter是带有set前缀的名称。

所以你可以像这样调用getter:

[object someProperty]

你可以像这样设置属性: [object setSomeProperty:newValue]

现在,这一切都很棒,但是调用setter和getter的方法较短,即 dot syntax ,如下所示:

object.someProperty = newValue; // setter

吸气剂:

object.someProperty // getter

现在在Swift中,以setSomeProperty方式生成的隐式生成器不再存在。它一直是Objective-C的奇怪怪癖,因此Swift引入了一种统一的方法来设置和获取属性。 在Swift中,只有一种设置和获取属性的方法,它使用点语法,这与Objective-C中的点语法相同。

因此,要真正回答您的问题,您需要删除set中的setSeparatorStyle部分,这将是您的新代码:

self.tableview.separatorStyle = UITableViewCellSeparatorStyle.None

通常你不必写self,如果只有一个名为self.tableView的变量,Swift很聪明地意识到你想要使用tableView范围,所以你可以写

tableview.separatorStyle = UITableViewCellSeparatorStyle.None

Swift甚至足够聪明地意识到赋值运算符(等号,=)后面的内容可能是分隔符样式,因此您只需编写.None

tableview.separatorStyle = .None

答案 1 :(得分:7)

对于那些正在寻找Swift 2和3表示法的人:

tableView.separatorStyle = UITableViewCellSeparatorStyle.None;

答案 2 :(得分:4)

我用过:

tableview.separatorStyle = .None

答案 3 :(得分:3)

查看:

Attributes inspector > table view > separator 这应该可以帮助您更改分隔符样式或完全删除它

答案 4 :(得分:0)

在Swift 5中

tableview.separatorStyle = UITableViewCell.SeparatorStyle.none