Есть ли способ удалить разделительную линию из 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протокола.
Барт Джейкобс


62
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
}

18

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

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.separatorColor = [UIColor clearColor];

Это сработало для меня. В моем случае разделительная линия фактически не появлялась между ячейками, а фактически где-то посередине.
Эллиот

10

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

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

self.tableView.tableFooterView = UIView ()



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];
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.