在我的社交应用中,我有一个名为“主页”的页面,在其中有一个tableView,其中包含最多3个不同的单元格!然后我实现了didSelect数据源方法,在该方法中执行一些比较,以确定我选择了什么类型的单元格...(每次需要进行3或4次比较)。对于我选择的每个单元格,都会实例化一个新的视图控制器。一个用于照片展示,另一个用于自定义相机展示,最后一个用于另一个简单的视图控制器展示...
问题是,出于某种未经解释的原因,如果我按下iPhone的Home按钮,然后再次打开我的应用程序并选择其中一个单元格,它需要长达7秒才能呈现出视图控制器!然后,如果我关闭该视图控制器,返回到“主页”并选择另一个单元格,则一切正常!
有人知道可能发生了什么吗?
编辑:
if currentArea != "Somewhere" {
if gettingContent == false && objectsArray.count == 0 {
if firstOfLocalLeaderboard != nil {
if indexPath.row == 0 {
let vc = self.storyboard!.instantiateViewController(withIdentifier: "TopTenAreaController") as! TopTenAreaController
vc.area = currentArea
let navVC = UINavigationController()
navVC.viewControllers = [vc]
self.present(navVC, animated: true, completion: nil)
}
else if indexPath.row == 1 {
if localLeaderboard.count > 0 {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PhotoViewController") as! PhotoViewController
vc.objectsArray = localLeaderboard
vc.currentArea = currentArea
let navVC = UINavigationController()
navVC.viewControllers = [vc]
self.present(navVC, animated: true, completion: nil)
}
else {
let vc = self.storyboard!.instantiateViewController(withIdentifier: "CameraViewController") as! CameraViewController
vc.appearedFromHome = true
let navVC = UINavigationController()
navVC.viewControllers = [vc]
self.present(navVC, animated: true, completion: nil)
}
}
}
else {
if indexPath.row == 0 {
if localLeaderboard.count > 0 {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PhotoViewController") as! PhotoViewController
vc.objectsArray = localLeaderboard
vc.currentArea = currentArea
let navVC = UINavigationController()
navVC.viewControllers = [vc]
self.present(navVC, animated: true, completion: nil)
}
else {
let vc = self.storyboard!.instantiateViewController(withIdentifier: "CameraViewController") as! CameraViewController
vc.appearedFromHome = true
let navVC = UINavigationController()
navVC.viewControllers = [vc]
self.present(navVC, animated: true, completion: nil)
}
}
}
}
viewDidAppear
或viewWillAppear
方法里做了什么耗时的操作吗?同时,在相关的self.present
行上放一个断点,检查 present 语句是立即执行还是延迟了 7 秒后才执行的?这种情况在 所有 导航控制器中都存在,还是只有某一个? - RikhDispatchQueue.main.async
解决了你的问题?我有点困惑。 - mfaani