Swift - segue以编程方式第一次显示视图控制器需要两秒钟

时间:2016-07-20 22:01:53

标签: ios swift segue

我无法找到为什么segue以编程方式第一次显示视图控制器大约需要2秒钟。当我返回视图控制器并尝试再次执行segue时,显示视图控制器不需要时间。我从模态segue打开了这些视图控制器。

我正在做这样的事情:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    dispatch_async(dispatch_get_main_queue()) {
        self.performSegueWithIdentifier("<segue identifier>", sender: indexPath)
    }
}

对于UITableView,我禁用了delaysContentTouches选项。它仍然不起作用,打开只需要两秒钟,但只是第一次。

同时我从Web服务获取NSTimer数据,但我读到NSTimer在不同的线程上执行,所以我认为这不是问题。

我错过了让segue更快地显示视图控制器的东西吗?

1 个答案:

答案 0 :(得分:0)

NSTimer可以在后台线程上工作,但不一定如此。这取决于您如何实例化它。一个简单的重复计时器通常会使用主线程的runLoop,它与UI更新密切相关。话虽这么说,我怀疑你的计时器可能导致显示视图的延迟。在UI设置时,更有可能正在执行一些繁重的处理。

可能导致这种一次性延迟的典型事情是: - 视图上的大图像(在故事板或笔尖中) - 将firstResponder提供给需要显示屏幕键盘的文本字段(屏幕键盘总是需要几秒钟才能显示第一次) - 复杂的UI约束,使自动布局经历多次传递,以确定子视图的位置和大小(但是,除非您保持视图控制器处于活动状态并重新使用它,否则下次将重新出现)。 - 在UITableView或UICollectionView上重复重新加载(如果你试图显示数据,可能会发生这种情况)但是这也会在后续调用segue时再次发生,除非你正在缓存某些东西