У меня есть пользовательская ячейка, внутри которой есть UIWebView, и в зависимости от высоты содержимого я задаю высоту для этой строки.Это делается после того, как я получаю следующий вызов делегата:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Вот что я делаю:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
/* Webview content height change works only if 0.1 sec delay given */
[GlobalClass delay:^{
webViewHeight = webView.scrollView.contentSize.height;
// If I log this, it prints old height
[tblOptions reloadData];
} seconds:0.1];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.section)
{
case 0: {
return webViewHeight;
}
case 1: {
return UITableViewAutomaticDimension;
}
case 2: {
return 60;
}
default:
return 0;
}
}
Теперь, если первая ячейка загружена, я получаю идеальную высоту (55) но когда загружается вторая ячейка, которая имеет большое содержание (800), но дает (55)Если я вернусь, то это должно быть (55), но в то время это дает (800).
Короче говоря, это дает мне предыдущую высоту вместо текущей высоты веб-просмотра.
Вот моя функция задержки:
+ (void)delay:(void(^)(void))callback seconds:(double)delayInSeconds
{
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
if(callback){
callback();
}
});
}