iPhone + UITableView + высота строки
-
06-07-2019 - |
Вопрос
Я устанавливаю высоту строки моего UITableView
, используя следующий код
[tableView setRowHeight: 100.00];
Я использую одну строку в качестве разделителя в UITableView
.
Несмотря на то, что установка высоты выше, высота строки не изменяется.
Решение
Вы должны реализовать
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
метод делегата. и верните 100.0 там.
Другие советы
Вам следует избегать heightForRowAtIndexPath
, если все ваши строки имеют одинаковую высоту и использовать свойство rowHeight
. Согласно документации:
Производительность tableView: heightForRowAtIndexPath: вместо rowHeight влияет на производительность. Каждый раз, когда отображается табличное представление, оно вызывает tableView: heightForRowAtIndexPath: для делегата для каждой из его строк, что может привести к значительной проблеме производительности с табличными представлениями, имеющими большое количество строк (приблизительно 1000 или более).
В подклассе UITableViewController это можно сделать, например, в методе viewDidAppear
( UITableViewController
имеет ссылку на tableView):
self.tableView.rowHeight = 79.f;
Высота строки заполняется в ячейках при первом их отображении.
Вы установили UITableView # rowHeight перед настройкой источника данных?
Если нет, сделайте это.
Если по какой-либо причине вы не можете, другой вариант - вызвать UITableView # reloadData после установки высоты строки.
Мне это понравилось, здесь tableobj
- это не что иное, как объект UITableView
в моем приложении.
- (void)viewDidLoad
{
[super viewDidLoad];
[tableObj setRowHeight:100.0f];
}
Или обработайте его в numberOfRowsInSection:
как:
- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section {
[tableObj setRowHeight:100.0f];
return [soandso count]; // soandso is my object
}
Потому что установите rowHeight
перед настройкой источника данных. Это сработало для меня (для равных высот строк).
Лучшее и более чистое решение - реализовать функцию делегата (возможно, не лучшую, если в вашем UITableView много строк ...).
Также подумайте, что UITableVieCell - это UIView, чтобы вы могли сначала изменить их высоту ...
Делегаты очень сильны в iPhone dev, здесь UITableViewDelage:
Вы также можете изменить indentForRow, displayCellForRow, heightForRow, отредактировать материал .....
Я не думаю, что в UITableView есть такой метод ...
Вместо этого вы можете использовать свойство rowHeight ...
Пытаться,
tableView.rowHeight = 100;