なぜこれが遅く実行されるのかわかりません。時々私は行をタップすることができ、それは即座にポップアップを開きます。時々私は行をタップすることができますし、読み込むには2〜3秒かかります。ほとんどの場合、コードを取得する際にコードが混乱するようです。UITableViewからのSwift Presenting Popoverは非常に遅く実行されます
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'関数についてはhttp://stackoverflow.com/a/24318861/341994を参照)にラップしています。これは、「0」または「0.1」の「遅延」とすることができる。違いがあれば見てください。それが助けにならないなら、大丈夫、失敗した、それをもう一度取り戻す。 – matt
@mattが示唆しているように、コードをメインスレッド上で明示的に実行しようとすることができます。 –
それは、私が間違ってやっていることがゆっくりと処理されていたコードがあるかどうか、本当に疑問に思っていたはずです。 Mattの提案を使用して動作します。 – matthew