OK、私はperformSegueWithIdentifier very slow when segue is modalを見て、同様の解決策を試みましたが、私はまだ問題があります - 私はSwiftで働いていて、リストVCセルからのタップに基づいてセグを実行すると5〜30秒かかります。バーが選択された状態でそこにハングアップします。 segueが実行されるまでローディングインジケータを表示するには?
私はしかし、すべてこれはバーの色が選択したことはありませんでしたDispatchQueue.main.async {
self.performSegue(withIdentifier: "toPodcastPlayer", sender: self)
}
でこれを高速化しようとしました。私はこれが起こるしようとしている場合はロード画面を表示する必要がありますが、時にロードするため、このfuncを持つ:
let loadView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
loadView.backgroundColor = UIColor.green
loadView.center = CGPoint(x: screenSize.width/2, y: screenSize.height/2)
view.addSubview(loadView)
そして、このタップ:
にfuncのtableView(_のtableView:のUITableView、didSelectRowAt indexPath:IndexPath ){
let selectedIndexPath : [IndexPath] = self.myTableView.indexPathsForSelectedRows!
(self.rssListToLoad [selectedIndexPath [0] .row] .link = ""){ showLoading() self.performSegue(withIdentifier: "IF!toPodcastPlayer"、送信者:自己)
と
if segue.identifier == "toPodcastPlayer" {
// find index path for selected row
let selectedIndexPath : [IndexPath] = self.myTableView.indexPathsForSelectedRows!
// deselect the selected row
self.myTableView.deselectRow(at: selectedIndexPath[0], animated: true)
// create destination view controller
let destVc = segue.destination as! PodcastViewController
// set title for next screen
destVc.adTxtName = "Skylar's Ad"
destVc.urlStr = self.rssRecordList[selectedIndexPath[0].row].link
destVc.trackLabel = self.rssRecordList[selectedIndexPath[0].row].title
それはまだ遅れています。ビューは既にストーリーボードに作成されており、次のVCにいくつかの変数を設定する必要があるため、これはわかりません。ここで何が間違っていますか?
私のsegueタイプはモーダルであり、非推奨ではありません。
ローディングUIを追加することができますが、あなたがそう長く取っているかを確認する楽器でそれをプロファイリングしようとしたことがありますか? 'didSelectRowAtIndexPath()'への呼び出しはすでにメインスレッド上にあり、非同期呼び出しであってはいけません。ここでGCDを使う必要はありません。これらのプロパティを設定すると、 'PodcastViewController'で何が起こっていますか? –
'performSegue'を呼び出すと、segueは本質的にコミットされます(' shouldPerformSegue'から 'false'を返すことで中止できます)。読み込みUIを表示する必要がある場合は、送り先ビューコントローラで行う必要があります。バックグラウンドスレッドでロードが非同期に実行されるようにする必要もあります。ロードが完了すると、ロードUIが削除され、ロードされたデータが表示されます。 – Paulw11
私の問題は、私が目的地で何をしているかにかかわらず、 "ローディング"時間の遅れがリストVC上で発生し、次に目的地に少し出ます。私がリストビューで言ったようなロードを表示しようとすると、セグが実際に動作するまで表示されません – skyguy