Swift 从 UITableView 呈现弹出窗口运行速度非常慢

Swift Presenting popover from UITableView runs very slow

我不太确定为什么运行缓慢。有时我可以点击该行,它会立即打开弹出窗口。有时我可以点击行,加载需要 2-3 秒。几乎似乎代码在获取单元格时感到困惑。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedItem = self.filteredTransactions[indexPath.row]
    if let cell = tableView.cellForRowAtIndexPath(indexPath) as? BudgetHomeCell {
        if let addTXView = self.storyboard?.instantiateViewControllerWithIdentifier("BHAddTXVC") as? BHAddTXVC {
            addTXView.modalPresentationStyle = .Popover
            addTXView.preferredContentSize = CGSizeMake(200, 200)
            let popover = addTXView.popoverPresentationController
            popover?.permittedArrowDirections = .Any
            popover?.delegate = self
            popover?.sourceView = cell.valueLabel
            popover?.sourceRect = cell.valueLabel.bounds
            addTXView.selectedTX = selectedItem
            self.presentViewController(addTXView, animated: true, completion: nil)
        }
    }
}

在 table 视图单元格中显示来自值标签的弹出窗口时,有什么改进性能的建议吗?在点击时,我检查了调试导航器,没有 CPU 或内存峰值。对于模拟的 iPad 和 iPad Air 2 都会发生这种情况。我确实有一个滑动手势 运行 把它扔掉了。我删除了它,但在某些情况下它仍然非常缓慢地显示弹出窗口。

有人在另一个 post 中回答了这个问题。在这里查看:

诀窍是在选择行后手动取消选择。它对我很有用。如果需要,请确保在取消选择之前使用或存储所选行。

我真的不知道为什么。 但这通过将 DispatchQueue.main.async {} 放入 didSelectRowAtItemAt.

解决了我的问题