Swift – UITableView设置分隔符样式
如何在Swift中设置我的UITableView的分隔符样式? 我想摆脱分隔符,以便我的表格视图中的单元格之间没有灰线。 任何build议将不胜感激。以下是我已经尝试过。
我在Objective-C中find了这个方法
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]
我尽我所能翻译这个迅速与
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 }
但是这只是抛出了更多的错误,“使用未parsing的标识符”UITableViewCellSeparatorStyleNone“
为了解释为什么你不能在Swift中调用setSeparatorStyle
,我需要解释Objective-C中的方法来自哪里。 如果您在标题( UITableView.h
)中search它,您将无法find它。 唯一宣布的是这样的:
@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;
setSeparatorStyle
是为Objective-C中的属性自动生成的setter。 假设你在Objective-C中声明一个属性,如下所示:
@interface SomeClass: NSObject @property (nonatomic) id someProperty; @end
Objective-C将自动为该属性生成一个setter和getter方法,其中getter是getter的名字,setter是带有前缀的名字。
所以你可以这样调用getter:
[object someProperty]
你可以像这样设置属性: [object setSomeProperty:newValue]
现在,这很好,但是有一个简短的方法来调用setter和getter,即dot语法 ,如下所示:
object.someproperty = newValue; // setter
而吸气剂:
object.someproperty // getter
现在在Swift中,这种以setSomePropety
方式隐式生成setter的方法已经不存在了。 它一直是Objective-C的一个奇怪的怪癖,所以Swift引入了一个统一的方法来设置和获取属性。 在Swift中,只有一种设置和获取属性的方法,它使用点语法 ,这与Objective-C中的点语法是一样的。
所以要真正回答你的问题,你需要删除setSeparatorStyle
中的set
部分,这将是你的新代码:
self.tableview.separatorStyle = UITableViewCellSeparatorStyle.none
通常你不必自己写self
,Swift是足够聪明的,以实现你想要使用self.tableView
如果只有一个名为tableView
variables范围,所以你可以写
tableview.separatorStyle = UITableViewCellSeparatorStyle.none
Swift甚至足够聪明地认识到赋值运算符(等号, =
)后面可能是分隔符风格,所以你可以写.none
。
tableview.separatorStyle = .none
对于那些正在寻找Swift 2和3符号的人来说:
tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
看下:
Attributes inspector > table view > separator
这应该帮助您更改分隔符样式或完全删除它
我用了 :
tableview.separatorStyle = .None