Swift - UITableView 设置分隔符样式

Swift - UITableView set separator style

如何在 Swift 中设置 UITableView 的分隔符样式?我想去掉分隔符,这样 table 视图中的单元格之间就没有灰线了。任何建议都会大大appreciated.Below 是我已经尝试过的。

我在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
}

但这只会引发更多错误,"Use of unresolved identifier 'UITableViewCellSeparatorStyleNone"

为了解释为什么不能在 Swift 中调用 setSeparatorStyle,我需要在 Objective-C 中解释该方法的来源。如果您在 header (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 是 [=88= 的名称],setter 是带有 set 前缀的名称。

所以你可以这样调用 getter:

[object someProperty]

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

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

object.someProperty = newValue; // setter

而 getter:

object.someProperty // getter

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

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

self.tableview.separatorStyle = UITableViewCellSeparatorStyle.none

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

tableview.separatorStyle = UITableViewCellSeparatorStyle.none

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

tableview.separatorStyle = .none

看下:

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

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

tableView.separatorStyle = UITableViewCellSeparatorStyle.None;

我用过:

tableview.separatorStyle = .None

在Swift5

tableview.separatorStyle = UITableViewCell.SeparatorStyle.none