从SplitviewVC的细节(仅限iPad)呈现Modal VC,性能降低

时间:2017-06-12 12:31:08

标签: ios swift ipad uisplitviewcontroller

背景

我的应用程序(iOS 9.3.5)基于UISplitViewController。细节VC是一个tableView。当选择一行时,我想显示一个模态VC。

问题

在iPad(不是iPhone)上,第一次选择行时,需要花费太长时间(4秒)才能显示模式。

  • 仅在使用iPad(目前配置为self.splitViewController?.preferredDisplayMode = .allVisible
  • 时才会出现这种情况
  • 仅在第一次选择行时发生。后续行选择很快。

我已将慢度present(:animated:completion)和模态viewDidLoad()之间隔离开来。我假设present(:animated:completion)正在执行一些需要首次发生的计算或逻辑检查,因为我没有正确或完全配置模态。我试图找到我没有设置或错误设置的内容。

模态VC设置

来自tableView(:didSelectRowAt:)

let promptVC = QuantityRequestVC(nibName: "QuantityRequestVC", bundle: nil)
promptVC.inject(ingredient: fetchedResultsController.object(at: indexPath)) // Loads the selected row's information into view
promptVC.delegate = self // Custom protocol to received information from popover
//Also slow for .fullScreen and .currentContext
promptVC.modalPresentationStyle = UIModalPresentationStyle.popover
let tableCell = tableView.cellForRow(at: indexPath)
promptVC.popoverPresentationController?.sourceView = tableCell
promptVC.popoverPresentationController?.sourceRect = (tableCell?.bounds)!
NSLog("About to present modal")
present(promptVC, animated: false, completion: nil)
NSLog("Just Presented")

在QuantityRequestVC的viewDidLoad()中,我还有一个NSLog作为第一行。

示例输出:

2017-06-12 08:12:16.047  About to present modal
2017-06-12 08:12:20.943  viewDidLoad entered
2017-06-12 08:12:20.944  super.viewDidLoad finished
2017-06-12 08:12:20.979  Just Presented

0 个答案:

没有答案