Ответ 1
Чтобы объяснить, почему вы не можете вызвать setSeparatorStyle
в Swift, мне нужно объяснить, откуда появился этот метод в Objective-C. Если вы ищете его в заголовке (UITableView.h
), вы его не найдете. Единственное, что было заявлено:
@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;
setSeparatorStyle
- установщик, автоматически генерируемый для свойства в Objective-C. Допустим, вы объявили свойство в Objective-C, например:
@interface SomeClass: NSObject
@property (nonatomic) id someProperty;
@end
Objective-C автоматически сгенерирует метод установки и получения для этого свойства, причем метод получения - это имя свойства, а метод установки - имя с префиксом set
.
Таким образом, вы можете позвонить получателю следующим образом:
[object someProperty]
И вы можете установить свойство следующим образом:
[object setSomeProperty:newValue]
Теперь все отлично, но есть более короткий способ вызова метода установки и получения, а именно точечный синтаксис, который выглядит следующим образом:
object.someProperty = newValue; // setter
И получатель:
object.someProperty // getter
Теперь в Swift это неявное создание сеттера таким способом setSomeProperty
больше не существует. Это всегда была странная особенность Objective-C, поэтому Swift представляет единый способ установки и получения свойств. В Swift есть только один способ установить и получить свойства, и он использует точечный синтаксис, который идентичен точечному синтаксису в Objective-C.
Таким образом, чтобы действительно ответить на ваш вопрос, вам нужно удалить часть set
из setSeparatorStyle
, и это будет ваш новый код:
self.tableview.separatorStyle = UITableViewCellSeparatorStyle.None
Обычно вам не нужно писать self
, Swift достаточно умен, чтобы понять, что вы хотите использовать self.tableView
, если в области видимости только одна переменная с именем tableView
, поэтому вы можете написать
tableview.separatorStyle = UITableViewCellSeparatorStyle.None
А Swift даже достаточно умен, чтобы понять, что то, что следует за оператором присваивания (знак равенства, =
), возможно, стиль разделителя, так что вы можете просто написать .None
.
tableview.separatorStyle = .None