Изменить высоту строки таблицы tableview в ios 5

Перед ios 5 я бы установил высоту строки в виде таблицы следующим образом:

self.tableView.rowHeight=71;

Однако он не работает на iOS5.

У кого-то есть идея?

Спасибо

Ответ 1

Вы пробовали tableView:heightForRowAtIndexPath: из UITableViewDelegate?

Вы можете установить высоту строки до 71 путем реализации tableView:heightForRowAtIndexPath: в вашем делете UITableView (тот, кто поддерживает протокол UITableViewDelegate).

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 71.0;
}

Сначала вы должны установить делегат вашего TableView. Делегат должен соответствовать протоколу UITableViewDelegate. Пусть говорят, что мы имеем класс TableDelegate. Чтобы соответствовать протоколу UITableViewDelegate, он должен иметь его в квадратных скобках в этом объявлении следующим образом:

...    
@interface TableDelegate : UIViewController <UITableViewDelegate>
...
or
@interface TableDelegate : UIViewController <some_other_protocol, UITableViewDelegate>

Затем вы установите делегат:

...
// create one first
TableDelegate* tableDelegate = [[TableDelegate alloc] init];
...
self.tableView.delegate = tableDelegate;

В конце вы должны реализовать метод tableView:heightForRowAtIndexPath: в реализации TableDelegate:

@implementation TableDelegate
...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 71.0;
}
...
@end

RowHeight

Чтобы уточнить, использование rowHeight должно работать нормально и работать лучше, чем константа, возвращаемая из -tableView:heightForRowAtIndexPath:, как указывает Хавьер Сото в комментариях. Также обратите внимание, что если ваш UITableView имеет делегат, возвращающий высоту в свойстве -tableView:heightForRowAtIndexPath: и rowHeight, то выполняется предварительное значение.

Ответ 2

Im кодирование для iOS 5, и это действительно работает. Вам просто нужно реализовать линию, указанную в:

 - (void)viewDidLoad

после:

[super viewDidLoad];

:

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

метод не работает, если TableView пуст. Но если вы используете свойство rowHeight, оно будет работать, даже если вид пуст.

Ответ 3

Этот метод изменяет высоту строки

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
    return  51.0f
};

Ответ 4

Попробуйте установить rowHeight до viewWillAppear:, например. сразу после создания табличного представления.

Это заставило меня работать на iOS 5. На iOS 6 это проще: вы можете установить его в любом месте.

Преимущество использования rowHeight, как указано другими, заключается в том, что вы избегаете влияния производительности tableView:heightForRowAtIndexPath:.