Swift - UITableView 设置分隔符样式
Posted
技术标签:
【中文标题】Swift - UITableView 设置分隔符样式【英文标题】:Swift - UITableView set separator style 【发布时间】:2015-01-03 22:27:13 【问题描述】:如何在 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'
在苹果文档中,它在 Objective-C 中给出了这些声明
typedef enum : NSInteger
UITableViewCellSeparatorStyleNone ,
UITableViewCellSeparatorStyleSingleLine ,
UITableViewCellSeparatorStyleSingleLineEtched
UITableViewCellSeparatorStyle;
所以我再次尝试使用
将其翻译成 Swift override func tableView(tableView: UITableView, setSeparatorStyle style: NSInteger) -> NSInteger
return UITableViewCellSeparatorStyleNone
但这只会引发更多错误,“Use of unresolved identifier 'UITableViewCellSeparatorStyleNone”
【问题讨论】:
【参考方案1】:为了解释为什么你不能在 Swift 中调用 setSeparatorStyle
,我需要解释一下这个方法在 Objective-C 中的来源。如果您在标题 (UITableView.h
) 中搜索它,您将找不到它。唯一声明的是:
@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;
setSeparatorStyle
是在 Objective-C 中为属性自动生成的设置器。假设您在 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 语法,如下所示:
object.someProperty = newValue; // setter
还有吸气剂:
object.someProperty // getter
现在在 Swift 中,这种以setSomeProperty
方式生成的 setter 隐式 不再存在。这一直是 Objective-C 的一个怪癖,所以 Swift 引入了一种统一的方法来设置和获取属性。 在 Swift 中,只有一种设置和获取属性的方法,它使用点语法,这与 Objective-C 中的点语法相同。
所以要真正回答您的问题,您需要删除setSeparatorStyle
中的set
部分,这将是您的新代码:
self.tableview.separatorStyle = UITableViewCellSeparatorStyle.none
通常你不必写self
,如果范围内只有一个名为tableView
的变量,Swift足够聪明,可以意识到你想使用self.tableView
,所以你可以写
tableview.separatorStyle = UITableViewCellSeparatorStyle.none
而且 Swift 甚至足够聪明地意识到在赋值运算符(等号,=
)之后的可能是分隔符样式,所以你可以只写 .none
。
tableview.separatorStyle = .none
【讨论】:
好帖子!在 Swift4 中 .None 已重命名为 .none【参考方案2】:对于那些正在寻找 Swift 2 和 3 表示法的人:
tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
【讨论】:
【参考方案3】:我用过:
tableview.separatorStyle = .None
【讨论】:
【参考方案4】:在 Swift 5 中
tableview.separatorStyle = UITableViewCell.SeparatorStyle.none
【讨论】:
【参考方案5】:看下面:
Attributes inspector > table view > separator
这应该可以帮助您更改分隔符样式或将其完全删除
【讨论】:
谢谢,这也是一个有效的解决方案以上是关于Swift - UITableView 设置分隔符样式的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中向 UITableView 添加按日期分隔的部分
swift 在blog.chrishannah.me上发布“在UITableView上隐藏额外分隔符”的示例代码