изменить высоту строки просмотра таблицы в ios 5 - PullRequest
10 голосов
/ 14 октября 2011

До ios 5 я бы установил высоту строки в табличном представлении так:

self.tableView.rowHeight=71;

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

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

Спасибо

Ответы [ 4 ]

18 голосов
/ 14 ноября 2011

Вы пробовали 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, предыдущее значение учитывается.

3 голосов
/ 27 декабря 2011

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

 - (void)viewDidLoad

метод после:

[super viewDidLoad];

The:

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

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

1 голос
/ 22 февраля 2016

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

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
    return  51.0f
};
0 голосов
/ 07 января 2013

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

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

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

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