Есть ли способ удалить разделительную линию из UITableView?

225

Я ищу способ полностью удалить разделительную линию в UITableView, когда в обычном режиме. Это делается автоматически в сгруппированном виде, но это также меняет размеры таблицы таким образом, который трудно измерить. Я установил цвет линии разделителя на colorClear. Но это не полностью решает проблему.

Поскольку я пытаюсь нарисовать пользовательский фоновый вид в ячейках и хочу, чтобы ячейки были бесшовными, одна пиксельная линия, которая остается между ними, вызывает у меня проблемы. Есть ли более элегантный обходной путь, чем использование сгруппированного представления и его растяжение?

запутанный
источник
Изменить, separatorInsetкак в этом ответе stackoverflow.com/a/8561820/1418457
onmyway133

Ответы:

454

Вы можете сделать это с UITableViewсобственностью separatorStyle. Убедитесь, что свойство установлено на UITableViewCellSeparatorStyleNoneи вы установлены.

Objective-C

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

В Свифте (до 3)

tableView.separatorStyle = .None

В Свифт 3/4/5

tableView.separatorStyle = .none
Барт Джейкобс
источник
39
Кстати, вы также можете сделать это в IB (separator => none).
Барт Джейкобс
1
Это только кажется, что удаляет разделительные линии в разделе таблицы. Есть ли способ удалить разделительные линии между разделами?
devios1
4
Линия между разделами - это не линия, а вид раздела. Вы можете изменить представление путем реализации tableView:viewForHeaderInSection:из UITableViewDelegateпротокола.
Барт Джейкобс
64

Вы также можете сделать это в редакторе раскадровки / XIB. Просто установите Сеператор на ноль.

введите описание изображения здесь

Кевин ДиТраглия
источник
62
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
}
imthi
источник
18

У меня все еще была темно-серая линия после попытки других ответов. Мне пришлось добавить следующие две строки, чтобы сделать все «невидимым» с точки зрения строк строк между ячейками.

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.separatorColor = [UIColor clearColor];
Сиг Майерс
источник
Это сработало для меня. В моем случае разделительная линия фактически не появлялась между ячейками, а фактически где-то посередине.
Эллиот
10

В интерфейсе Builder установлен табличный вид разделителя «Нет»

введите описание изображения здесь и те разделительные линии, которые показаны после последней ячейки, могут быть удалены с помощью следующего подхода. Лучший подход заключается в назначении пустого представления для tableView FooterView в viewDidLoad

self.tableView.tableFooterView = UIView ()

Мохсин Куреши
источник
9

В Свифте:

tableView.separatorStyle = .None
Мохсен
источник
5

В iOS 9 beta 4 есть ошибка: разделительная линия появляется между UITableViewCells, даже если вы установили separatorStyleее UITableViewCellSeparatorStyleNoneна раскадровке. Чтобы обойти это, вы должны установить его из кода, потому что на данный момент есть ошибка в раскадровке. Надеюсь, они исправят это в следующей бета-версии.

Вот код для его установки:

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
Сиддеш Махадешвар
источник
2

В методе ViewDidLoad вы должны написать эту строку.

tableViews.separatorStyle = UITableViewCellSeparatorStyleNone;

Это рабочий кодекс.

Ашу
источник
1

В вашем viewDidLoad:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)])
{
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
Аатиш Хавия
источник