0

なぜこれが遅く実行されるのかわかりません。時々私は行をタップすることができ、それは即座にポップアップを開きます。時々私は行をタップすることができますし、読み込むには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の両方で発生します。私はそれを投げたスワイプジェスチャーを実行しました。私はこれを削除し、ポップアップを表示するのが非常に遅い場合もあります。

+1

ここでは、あなたの 'didSelectRowAtIndexPath'の内部全体を' delay'ブロック(私の 'delay'関数についてはhttp://stackoverflow.com/a/24318861/341994を参照)にラップしています。これは、「0」または「0.1」の「遅延」とすることができる。違いがあれば見てください。それが助けにならないなら、大丈夫、失敗した、それをもう一度取り戻す。 – matt

+0

@mattが示唆しているように、コードをメインスレッド上で明示的に実行しようとすることができます。 –

+0

それは、私が間違ってやっていることがゆっくりと処理されていたコードがあるかどうか、本当に疑問に思っていたはずです。 Mattの提案を使用して動作します。 – matthew

答えて

2

誰かが別の投稿でこれを回答しました。ここをクリックしてください:https://stackoverflow.com/a/27227446/4740794

トリックは、選択された行を手動で選択解除することです。それは私にとって素晴らしい仕事でした。必要に応じて、選択した行を使用または保存してから、選択を解除してください。

関連する問題