Swift - UITableView设置分隔符样式

Tim*_*ing 13 uitableview ios swift

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

我在Objective-C中找到了这个方法

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]
Run Code Online (Sandbox Code Playgroud)

我尽力将其翻译成快速的

self.tableView.setSeparatorStyle = UITableViewCellSeparatorStyle.None
Run Code Online (Sandbox Code Playgroud)

但这会出现错误

'(UITableView, numberOfRowsInSection: Int) -> Int' does not have a member named 'setSeparatorStyle'
Run Code Online (Sandbox Code Playgroud)

在苹果文档中,它在objective-C中给出了这些声明

typedef enum : NSInteger  {


UITableViewCellSeparatorStyleNone ,
   UITableViewCellSeparatorStyleSingleLine ,
   UITableViewCellSeparatorStyleSingleLineEtched 
} UITableViewCellSeparatorStyle;
Run Code Online (Sandbox Code Playgroud)

所以我再次尝试将其转换为Swift使用

 override func tableView(tableView: UITableView, setSeparatorStyle style: NSInteger) -> NSInteger {
    return UITableViewCellSeparatorStyleNone
}
Run Code Online (Sandbox Code Playgroud)

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

wan*_*der 31

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

@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;
Run Code Online (Sandbox Code Playgroud)

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

@interface SomeClass: NSObject

@property (nonatomic) id someProperty;

@end
Run Code Online (Sandbox Code Playgroud)

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

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

[object someProperty]

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

现在,这一切都很棒,但是有一种更短的方式来调用setter和getter,即点语法,如下所示:

object.someProperty = newValue; // setter

和吸气剂:

object.someProperty // getter

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

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

self.tableview.separatorStyle = UITableViewCellSeparatorStyle.None
Run Code Online (Sandbox Code Playgroud)

通常你不必编写self,self.tableView如果只有一个tableView在作用域中命名的变量,Swift足够智能实现你想要使用,所以你可以写

tableview.separatorStyle = UITableViewCellSeparatorStyle.None
Run Code Online (Sandbox Code Playgroud)

Swift甚至足够聪明地意识到赋值运算符(等号)后面的东西=可能是分隔符样式,所以你可以写.None.

tableview.separatorStyle = .None
Run Code Online (Sandbox Code Playgroud)

  • 好帖子!在Swift4中.None已重命名为.none (2认同)

fan*_*dro 7

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

tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
Run Code Online (Sandbox Code Playgroud)


Amy*_*yen 7

我用了 :

tableview.separatorStyle = .None
Run Code Online (Sandbox Code Playgroud)


den*_*T30 6

在斯威夫特 5

tableview.separatorStyle = UITableViewCell.SeparatorStyle.none
Run Code Online (Sandbox Code Playgroud)