2014-11-20 1 views
0

У меня разные UIStoryboards для разных устройств в проекте, где я не использую Auto Layout. Внутри UITableViewController у меня есть два разных UITableViewCells с разной высотой. Я пытаюсь загрузить высоту со следующими линиями в viewDidLoadПолучите высоту пользовательского UITableViewCell, работающего с различными UIStoryboards

ProfileCell *profilCell = 
(ProfileCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"profileCell"]; 
fProfileHeight = profilCell.frame.size.height; 

MenuCell *menuCell = 
(MenuCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"menuCell"]; 
fMenuHeight = menuCell.frame.size.height; 

Проблема заключается в том, что не соответствует значениям, которые я установил внутри UIStoryboard. CellIdentifier также установлен, и контент представлен правильно, я просто не могу загрузить точный tableRowHeight. Кто-нибудь знает, что я могу сделать? Я также искал эту проблему, но я не мог найти ничего подходящего для моей проблемы. У меня также нет никаких наконечников, иначе я мог бы загрузить высоту из nib-файла.

ответ

1

Вы должны поместить ячейку в файл XIb интерфейса, после чего

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     MenuCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"MenuCell" 
                 owner:nil 
                options:nil] firstObject]; 
     return cell.frame.size.height; 
} 

Кроме того, после размещения в XIb, вам необходимо зарегистрировать СИБ в качестве многоразовой клетки.

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     [self.tableView registerNib:[UINib nibWithNibName:@"MenuCell" bundle:nil] 
      forCellReuseIdentifier:@"MenuCell"]; 
} 
+0

Как я писал в своем сообщении, я знаю о решении с файлами nib ... но у меня его нет. Я хочу знать, есть ли решение получить высоту 'UITableViewCell' непосредственно внутри моего кода –

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