iPhone + UITableView + высота строки - PullRequest
22 голосов
/ 28 октября 2009

Я устанавливаю высоту строки моего UITableView, используя следующий код

[tableView setRowHeight: 100.00];

Я использую одну строку в качестве разделителя в UITableView.

Несмотря на то, что установка высоты выше, высота строки не меняется.

Ответы [ 6 ]

65 голосов
/ 28 октября 2009

Вы должны реализовать

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

метод делегата. и верните туда 100.0.

23 голосов
/ 19 января 2011

Вам следует избегать heightForRowAtIndexPath, если все ваши строки имеют одинаковую высоту и использовать свойство rowHeight. Согласно документации:

Существуют последствия для производительности при использовании tableView: heightForRowAtIndexPath: вместо rowHeight. Каждый раз, когда отображается табличное представление, оно вызывает tableView: heightForRowAtIndexPath: для делегата для каждой из его строк, что может привести к значительной проблеме производительности с табличными представлениями, имеющими большое количество строк (приблизительно 1000 или более).

В подклассе UITableViewController это можно сделать, например, в методе viewDidAppear (UITableViewController имеет ссылку на tableView):

self.tableView.rowHeight = 79.f;
7 голосов
/ 09 декабря 2009

Высота строки запекается в ячейках при их первом отображении.

Вы установили UITableView # rowHeight перед настройкой источника данных?
Если нет, сделайте это.
Если по какой-либо причине вы не можете, другой вариант - вызвать UITableView # reloadData после установки высоты строки.

3 голосов
/ 07 ноября 2012

Мне понравилось, здесь 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 перед настройкой источника данных. Это сработало для меня (для равных высот строк).

0 голосов
/ 10 июля 2010

Лучшее и более чистое решение - реализовать функцию делегата (возможно, не лучшую, если в вашем UITableView много строк ...).

Кроме того, подумайте, что UITableVieCell - это UIView, чтобы вы могли сначала изменить их высоту ...

Делегаты очень мощные в устройстве iPhone, здесь UITableViewDelage:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

Вы также можете изменить indentForRow, displayCellForRow, heightForRow, редактировать материал .....

0 голосов
/ 28 октября 2009

Не думаю, что в UITableView есть такой метод ...

Вместо этого вы можете использовать свойство rowHeight ...
Пытаться, tableView.rowHeight = 100;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...