2010-09-08 2 views
1

Это мой горячий сон, чтобы иметь UITableView с разными размерами строк, определенными программно. Я прочитал документацию UITableViewDataSource, и я реализую эти методы:Почему метод источника данных rowHeight не называется

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section; 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

, которые мы можем увидеть здесь:

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

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell* test = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil ]; 

    test.textLabel.text = @"TEST"; 

    CGRect ffframe = test.frame; 

    ffframe.size.height *= 200.0f; 

    test.frame = ffframe; 

    return test;   
} 

Они просто пытаются сделать простую таблицу, с одной строки, и высота 200,0. Я пытаюсь вернуть высоту в методе делегата и установить его явно. Ничего не работает.

Я пытаюсь захватить метод heightForRow в отладчике, кажется, его никогда не вызывают.

Мои строки в таблице всегда соответствуют размеру, заданному в построителе интерфейса.

У меня есть источник данных, подключенный правильно, иначе он не получит строки и textLabel.

+0

heightForRowAtIndexPath - это метод делегата, а не источник данных. Вы также установили свой объект в качестве делегата таблицы? – Vladimir

ответ

6

Это метод делегата поэтому убедитесь, что у вас есть

self.tableview.delegate = self; 

в viewDidLoad или же имеете свойство TableView делегата в XIb соединился с контроллером.

+2

Да, это решение. Почему это метод делегата, а не метод данных, кажется странным. Но как только я установил делегат, он работает. –

2

Осторожно, этот метод является таблицей delegate не dataSource метод.

Смежные вопросы