Удалить разделитель из неиспользуемых UITableViewCells

#ios #objective-c #uitableview

#iOS #objective-c #uitableview

Вопрос:

У меня есть UITableView пользовательская ячейка, в tableView:numberOfRowsInSection: методе, который я использую, количество объектов в массиве источника данных.

 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return [self.myArray count];
}
 

Когда я запускаю приложение и отображаю список, все идеально, кроме одного. Например, если у меня есть 4 объекта в массиве, в табличном представлении отображаются 4 ячейки с правильным содержимым, но я вижу предстоящие пустые ячейки, потому что у них есть разделитель. Поэтому я хотел бы удалить каждый разделитель, который идет после последней строки, в которой отображается содержимое. Я не понимаю, почему это происходит, потому что я думаю, что количество ячеек должно быть равно количеству массива изначально.

Ответ №1:

Вы должны установить 0 для размера нижнего колонтитула, чтобы очистить эти «призрачные» ячейки.

 self.myTable.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
 

Комментарии:

1. Спасибо, все работает хорошо! Мне просто интересно, что это законный способ сделать это? Я имею в виду, что это не противоречит руководству по интерфейсу пользователя?

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

Ответ №2:

Я никогда не видел правильного способа сделать это, но я могу придумать обходной путь, который не так уж плох и определенно не противоречит ни одному из ограничений Apple. Вы можете настроить tableFooterView в TableView на сплошной белый (или соответствующим образом оформленный) вид с соответствующей высотой (высота экрана — 4 * cellHeight).

Комментарии:

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

Ответ №3:

Это может решить вашу проблему:

 (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
 

Комментарии:

1. Без остальной части кода сложно ответить на это. Является ли представление таблицы делегированным самому себе?

Ответ №4:

Если ваша ячейка является пользовательской, добавьте UIView в нижней части представления содержимого ячейки высотой 1 пиксель и той же ширины, что и ячейка с некоторым цветом, чтобы действовать как разделитель, затем добавьте приведенный ниже код, чтобы избежать разделителя ячеек в виде таблицы, например :

  [tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
 

Ответ №5:

Вы также можете использовать,

 self.tableView.tableFooterView = [[UIView alloc] init];