#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];