我找不到为什么segue以编程方式需要大约2秒钟才能第一次显示视图控制器的原因。当我返回视图控制器并尝试再次执行segue时,不需要花费时间就可以显示视图控制器。我从模态搜索中打开了这些视图控制器。
我正在做这样的事情:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("<segue identifier>", sender: indexPath)
}
}
对于
UITableView
,我禁用了delaysContentTouches
选项。而且它仍然不起作用,只需要大约两秒钟即可打开,而只是第一次。同时,我有一个
NSTimer
从Web服务中获取数据,但是我读到NSTimer
在不同的线程上执行,所以我认为这不是问题。我是否缺少某些东西来使segue更快地显示视图控制器?
最佳答案
NSTimer可以在后台线程上工作,但不一定要这样做。这取决于您如何实例化它。一个简单的重复计时器通常会使用与UI更新紧密相关的主线程的runLoop。话虽如此,我怀疑您的计时器可能会延迟显示视图的时间。设置UI时,很可能正在执行一些繁重的处理。
可能导致这种一次性延迟的典型因素是:
-视图上的大图像(在情节提要或Nib中)
-将firstResponder赋予需要显示屏幕键盘的文本字段(屏幕键盘总是需要几秒钟才能首次显示)
-复杂的UI约束使自动布局需要经过多次遍历才能弄清子视图的位置和大小(但是除非您使视图控制器保持活动状态并重新使用它,否则下次会再次出现)。
-重复在UITableView或UICollectionView上重新加载(如果您尝试显示输入的数据,则可能会发生这种情况),但是除非您正在缓存某些内容,否则在随后的segue调用中也会再次发生这种情况
关于ios - Swift-以编程方式进行搜索需要2秒才能首次显示 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38491597/