私のアプリでは、同じTableViewControllerを複数回押す必要があります。ユーザーがdidSelectをタップすると、同じコントローラをナビゲーションスタックにプッシュする必要があります。同じTableViewControllerをナビゲーションスタックに複数回プッシュ
私のアプリはファイルマネージャーアプリであり、ftpサーバーに接続し、ユーザーの中身を表示します。しかし、フォルダ内には、より多くのフォルダ(無限)を含むフォルダが存在する可能性があります。
私はストーリーボードにTableViewControllersの多くを作成することはできませんし、私はこれをナビゲーションスタックに同じコントローラをプッシュしようとすると、このために:
navigationController?.pushViewController(self, animated: true)
私はエラーを取得するには、私は同じコントローラをプッシュすることはできませんと言っていますnavスタック。 だから私は私のコントローラの新しいインスタンスを作成し、このようにプッシュしよう:識別子でセルをデキュー
」できないFolderCell:
let newMyTableVC = MyTableVC() navigationController?.pushViewController(newMyTableVC, animated: true)
しかし、これで、私もエラーはそれが言います - 識別子のペン先やクラスを登録するか、ストーリーボードにプロトタイプセルを接続する必要があります '
このエラーから私の最初のTableViewController私の細胞の識別子とそれは記憶にあります。私は、同じセル識別子を持つ私のTableViewControllerの新しいインスタンスを渡そうとすると、セルがすでに同じ識別子で存在するため、クラッシュします(私は間違っているかもしれません)。
If i am on right track doing this with approach at the above {
How do i reuse cells with dynamic identifier and provide data to them.
} else {
How do i accomplish what i want?
}
ありがとうございます。
はなぜ新しいコントローラを毎回作成していないだけで、現在のものと一致するデータセットを変更しますディレクトリ?その後、TableViewのreloadData()機能を使用しますか? – Guardanis
それは完全に良いアプローチです。テーブルビューコントローラにストーリーボードIDを与え、self.storyboard instantiateViewControllerWithIdを使用してインスタンス化します。 – danh
お返事ありがとうございました。新しいネットワーク要求を待ち、tableViewを再ロードすることなく、最後のフォルダビューコントローラからキャッシュに戻ることができるようにするために、毎回新しいコントローラを作成する必要があります。また、新しいView Controllerをナビゲーションスタックにプッシュするのではなく、ユーザーがセルをタップしてデータをリロードすると、ユーザーエクスペリエンスが悪くなります。 –