2015-09-28 3 views
0

У меня есть UITableView с простой UITableViewCell, высота которой установлена ​​в методе tableView: heightForRowAtIndexPath:. Я использую этот метод в 5 приложениях, и он работает каждый раз отлично, но теперь у меня есть некоторые проблемы с ним, когда я его использую, моя ячейка не обнаруживает краны.UITableViewCell не обнаруживает ответвление, когда я использую heightForRowAtIndexPath: метод

Как я выяснил, он отлично работает в проектах, которые я создал в Xcode 6, но он не работает в проекте, который я создал в Xcode 7. У кого-нибудь есть идея, что может вызвать эту проблему? Что-то изменилось с помощью метода tableView: heightForRowAtIndexPath:? Это действительно раздражает, потому что я понятия не имею, он отлично работает в моих других приложениях (проект, созданный с помощью Xcode6), но он не хочет работать в моем недавно созданном проекте Xcode 7. Когда я удаляю его, ячейка начинает обнаруживать ответвление снова, когда я добавляю его, я не могу даже выписать NSLog в didSelectRowAtIndexPath: для ответвлений.

Я был бы очень признателен, если бы кто-нибудь мог дать мне несколько советов, что делать. Может быть, это просто что-то основное, что мне нужно включить в IB, но не мог понять.

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

    if(!self.itemCell) { 
     self.itemCell = [self.tableView dequeueReusableCellWithIdentifier:@"cell"]; 
    } 

    NSString *object = [self.stringArray objectAtIndex:indexPath.row]; 

    self.itemCell.itemTitle.text = object; 


    [self.itemCell layoutIfNeeded]; 

    CGFloat height = [self.itemCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 

    return height+5; 
} 

(я также попытался cell.userInteractionEnabled = YES; без какого-либо успеха.)

+1

Никогда не называйте 'dequeueReusableCellWithIndentifier' внутри' метода heightForRowAtIndexPath'. Это может привести к сбоям, вызванным бесконечной рекурсией. – rmaddy

+0

@rmaddy, что мне делать в качестве альтернативы? Он отлично работает в нескольких приложениях. – rihe

+1

Вероятно, это работает, потому что вы сохраняете результат в ivar, что означает, что он будет работать только в том случае, если в вашем представлении таблицы есть одна строка. – rmaddy

ответ

0

Вы можете попробовать один раз, удаляя весь код dequeing. У меня был такой проект, и он работал нормально.

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath { 
NSString *object = [self.stringArray objectAtIndex:indexPath.row]; 

self.itemCell.itemTitle.text = object; 


[self.itemCell layoutIfNeeded]; 

CGFloat height = [self.itemCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 

return height+5; 
} 

Надеется, что это помогает