Swift - стиль разделителя UITableView

Как установить стиль разделителя моего UITableView в Swift? Я хочу избавиться от разделителя, чтобы между ячейками в моем представлении таблицы не было серой линии. Любые предложения были бы очень благодарны. Это то, что я уже пробовал.

Я нашел этот метод в objective-C

[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
}

Но это просто вызывает больше ошибок: "Использование неразрешенного идентификатора" UITableViewCellSeparatorStyleNone "

Ответ 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

Ответ 2

Для тех, кто ищет записи Swift 2 и 3:

tableView.separatorStyle = UITableViewCellSeparatorStyle.None;

Ответ 3

Я использовал:

tableview.separatorStyle = .None

Ответ 4

Посмотрите под:

Attributes inspector > table view > separator Это должно помочь вам изменить стиль разделителя или полностью удалить его.

Ответ 5

В Swift 5

tableview.separatorStyle = UITableViewCell.SeparatorStyle.none