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)
对于那些正在寻找Swift 2和3表示法的人:
tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
Run Code Online (Sandbox Code Playgroud)
在斯威夫特 5
tableview.separatorStyle = UITableViewCell.SeparatorStyle.none
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30128 次 |
| 最近记录: |