来自 UITableView 的 Swift Presenting popover 运行速度非常慢
Posted
技术标签:
【中文标题】来自 UITableView 的 Swift Presenting popover 运行速度非常慢【英文标题】:Swift Presenting popover from UITableView runs very slow 【发布时间】:2016-04-23 02:44:34 【问题描述】:我不确定为什么它运行缓慢。有时我可以点击该行,它会立即打开弹出窗口。有时我可以点击该行,加载需要 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)
在从表格视图单元格中的值标签显示弹出框时,有什么更好的性能建议吗?在点击时,我检查了调试导航器,没有 CPU 或内存峰值。模拟 iPad 和 iPad Air 2 都会发生这种情况。我确实有一个滑动手势运行,它把它扔掉了。我删除了它,在某些情况下它仍然非常缓慢地显示弹出窗口。
【问题讨论】:
这是一个疯狂而疯狂的猜测:将didSelectRowAtIndexPath
的整个内部包裹在一个delay
块中(对于我的delay
函数,请参阅***.com/a/24318861/341994)。它可以是 0
或 0.1
的 delay
。看看这是否有什么不同。如果它没有帮助,好吧,我们失败了,把它重新拿出来。
正如@matt 建议的那样,您可以尝试显式地使代码在主线程上运行。
应该已经意识到了,我想我真的想知道代码是否有什么东西导致它处理缓慢,我做错了。使用马特的建议是有效的。
【参考方案1】:
我真的不知道为什么。
但这通过将DispatchQueue.main.async
放入didSelectRowAtItemAt
解决了我的问题。
【讨论】:
【参考方案2】:有人在另一个帖子中回答了这个问题。在这里查看:https://***.com/a/27227446/4740794
诀窍是在选择行后手动取消选择该行。它对我很有用。如果需要,请确保在取消选择之前使用或存储选定的行。
【讨论】:
以上是关于来自 UITableView 的 Swift Presenting popover 运行速度非常慢的主要内容,如果未能解决你的问题,请参考以下文章
来自 JSON 数据的 UITableView 部分 swift
来自 UITableView 的 Swift Presenting popover 运行速度非常慢
在 Swift 2 和 Xcode 7 中使用来自 youtube 视频的 JSON 数据填充 UITableView