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
如何在 Swift 中设置 UITableView 的分隔符样式?我想去掉分隔符,这样 table 视图中的单元格之间就没有灰线了。任何建议都会大大appreciated.Below 是我已经尝试过的。
我在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
}
但这只会引发更多错误,"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