Перед ios 5 я бы установил высоту строки в виде таблицы следующим образом:
self.tableView.rowHeight=71;
Однако он не работает на iOS5.
У кого-то есть идея?
Спасибо
Перед ios 5 я бы установил высоту строки в виде таблицы следующим образом:
self.tableView.rowHeight=71;
Однако он не работает на iOS5.
У кого-то есть идея?
Спасибо
Вы пробовали 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
должно работать нормально и работать лучше, чем константа, возвращаемая из -tableView:heightForRowAtIndexPath:
, как указывает Хавьер Сото в комментариях. Также обратите внимание, что если ваш UITableView имеет делегат, возвращающий высоту в свойстве -tableView:heightForRowAtIndexPath:
и rowHeight
, то выполняется предварительное значение.
Im кодирование для iOS 5, и это действительно работает. Вам просто нужно реализовать линию, указанную в:
- (void)viewDidLoad
после:
[super viewDidLoad];
:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
метод не работает, если TableView пуст. Но если вы используете свойство rowHeight, оно будет работать, даже если вид пуст.
Этот метод изменяет высоту строки
-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
return 51.0f
};
Попробуйте установить rowHeight
до viewWillAppear:
, например. сразу после создания табличного представления.
Это заставило меня работать на iOS 5. На iOS 6 это проще: вы можете установить его в любом месте.
Преимущество использования rowHeight
, как указано другими, заключается в том, что вы избегаете влияния производительности tableView:heightForRowAtIndexPath:
.