我在核心数据表中有100行,在tableView中我加载了25行。当我在应用程序中打开这个UIViewController它需要将近2秒,我认为这是非常缓慢的。我在iPhone 5上测试我的应用程序。可能是我做错了什么? 我看到cellForRowAtIndexPath方法为所有行调用4次:1-25,然后再次1-25等等。它可以吗? 当我只加载一行时,它的工作速度很快。
self.observers
答案 0 :(得分:0)
您的estimatedHeightForRowAtIndexPath有一个问题。你在那里调用cellForRowAtIndexPath,这就是为什么你再次调用这个方法。您可以删除该代码并执行以下操作:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
return self.heightForBasicCellAtIndexPath(indexPath)
}
func heightForBasicCellAtIndexPath( indexPath: NSIndexPath) -> CGFloat
{
var sizingCell: UITableViewCell? = nil;
var token: dispatch_once_t = 0
dispatch_once(&token) {
sizingCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as? TipsTableViewCell
}
return sizingCell!.frame.size.height;
}
此方法使用GCD实例化sizingCell,以确保仅创建一次。
希望这有帮助
答案 1 :(得分:0)
我删除了heightForRowAtIndexPath和estimatedHeightForRowAtIndexPath并添加到viewDidLoad()这个:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 160.0