iphone sdk委托在表视图中等待10秒后从数据库加载大量数据后无法返回

时间:2009-09-09 08:04:29

标签: iphone objective-c uitableview delegates

SendDelegateMessage:委托在等待10秒后无法返回。主运行循环模式:kCFRunLoopDefaultMode 如果您没有在整个时间间隔内使用触摸屏(可以延长此等待时间),请提交错误。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  { 
    /*
    //NSString *label = [self.aNote length] == 0 ? kDefaultNoteLabel : self.aNote;
    NSString *label = [countriesToLiveInArray objectAtIndex:indexPath.row];

    //CGFloat height = [label RAD_textHeightForSystemFontOfSize:kTextViewFontSize] + 20.0;
    //return height;
    float lineHeight = [ @"Fake line" sizeWithFont: [UIFont fontWithName:@"MarkerFelt-Thin" size:15] ].height;


    int numLines = [label sizeWithFont: [UIFont fontWithName:@"MarkerFelt-Thin" size:15]  constrainedToSize: CGSizeMake(250, lineHeight*1000.0f) lineBreakMode: UILineBreakModeTailTruncation ].height / lineHeight;
    CGSize labelsize =  CGSizeMake(250, (lineHeight*(float)numLines));
    return labelsize.height+10;
     */
    return 100;

}

这个代表是问题。如果我注释掉整个函数,那么程序就可以了。广告表视图使用默认高度但是我们返回任何类型的返回值然后它显示消息...请帮助我们。

1 个答案:

答案 0 :(得分:1)

对于具有大量行的表,使用-heightForRowAtIndexPath:非常昂贵。必须为表中的每一行调用一次,而不仅仅是可见行。 Apple在documentation

中警告它
  

对性能有影响   运用   的tableView:heightForRowAtIndexPath:   而不是rowHeight属性。   每次显示表格视图时   它叫   tableView:heightForRowAtIndexPath:on   每行的代表,   这可能会产生重大影响   表视图的性能问题   有大量的行   (大约1000或更多)。

除非您可以缓存一些信息以使方法运行得更快,否则您应该考虑使用固定的行高。