如何在Swift中设置UITableView的分隔符样式?我想摆脱分隔符,以便在我的表视图中的单元格之间没有灰线。任何建议都会非常感激。我已经尝试过了。
我在Objective-C
中找到了这个方法[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]
我尽力用
将其翻译成swiftself.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"
答案 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