-1

は私がUINavigationControllerを持っており、それがルートビューは、 をUITextFiledしている問題があるUICollectionViewController、私はこのでセルをタップするたびUICollectionViewControllerがUICollectionViewController別をプッシュしているのです私は元に戻って、同じセルをタップします。全員ビュー、UITextFieldは空です。UINavigationControllerプッシュロードビューの各時間

私がしたいことは、開いているチャットの会話や何かを入力して同じチャットの会話に戻ったときに、同じようなものです。 私が書いたテキストがUITextFieldにあります。

EDIT: これは私がコントローラをプッシュするために使用するコードです:

let nextView = self.storyboard!.instantiateViewControllerWithIdentifier("nextView") as! nextViewController 
    self.navigationController!.pushViewController(nextView, animated: true) 

iはポップからビューをUINavigationControllerを防ぎ、およびロードされたそれを維持することはできますか?

+0

基本的には、通常のナビゲーションコントローラの動作を説明しています。ビューがスタックからポップされると、メモリは再割り当てされ、ビューは完全になくなります。再度タップするときにデータを復元する場合は、このデータを新しいView Controllerに渡す方法を工夫する必要があります。より良い回答を得るには、ビューを初期化する方法と達成する必要があるものを示すコードを追加してみてください。そうしないと、あなたの質問があまりにもあいまいで、良い答えを得ることができません。 –

+0

プッシュビューコントローラでプロトコルまたは通知を実装する必要があり、コールデリゲートをポップアップする前に –

+0

私の質問が更新されました.UINavigationControllerからポップアップビューを表示して、ロードしないようにすることはできますか? –

答えて

0

2番目のビューから最初のビューにデータを渡すユーザープロトコル。次のリンクはあなたを助け、プロトコルを使用して、価値を渡して定義されたものとして示すことができます。

https://www.codebeaulieu.com/36/Passing-data-with-the-protocol-delegate-pattern

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    if self.isBeingDismissed() { 
     self.delegate?.acceptData(textFieldOutlet.text) 
    } 
} 
、この委任は、第1のコントローラと前記第二のコントローラからの値を渡すための適切な方法です。

もう1つ、ビューコントローラ アーキテクチャをもう一度検討する必要があります。一種のチャットにはどのように最善を尽くすべきでしょうか、あなたは です。

ありがとうございます。

+0

あなたの答えはありがたいですが、とにかくビューをロードしたままにしておきますか? –

+0

データベースと再フェッチデータも使用できます。それ以上に考える。 @HaidarMahmoud –

+0

あなたはそれをロードし続けることはできません。ポップアップすると、View Controllerはデータを失うので、userdefault、plist、core-dataまたはSqliteのような場所にデータを保存する必要があります。 –

0

ローカルデータベースを使用して、保存されていないデータを保存します。ビュー上にチャット・ビューが表示されている場合は、その特定のユーザーの未保存データがあるかどうかを確認します。その場合、ケースがテキスト・ボックスに追加されます。

0

これはデフォルトまたは通常の動作で、UINavigationControllerです。 ViewControllerがポップアップすると、ナビゲーションスタックから削除され、ViewControllerdeallocateがメモリから削除されます。

テキストフィールドのテキストを前述のように保持したい場合は、どこかに格納する必要があります。 NSUserDefaultsと同じキーで保存することができます。テキストがある場合は毎回viewDidloadをチェックインし、テキストフィールドに表示し、すべてviewDidDisappearuserdefaultに再度設定してください。また、テキストフィールドが空の場合は空の文字列を設定してください。

デリゲートとプロトコルを使用して以前のクラスにデータを送り返し、再びそのクラスまたはVCに送信して表示することができます。

この種類のソリューションのようなものを管理できます。

関連する問題