私は2つのView Controller、HomeViewController、およびSecondViewControllerを持っています。これは、スタックの先頭のHomeViewControllerの上にプッシュされます。私はHomeVCからSecondVCまで「ショー」によってセグを持っています。私はSecondVCからHomeVCに情報を渡す方法を理解しています - 識別子を使ってsegueメソッドの準備を使用します。しかし、ナビゲーションコントローラに組み込まれているので、SecondVCからHomeVCへのセグはありません。ナビゲーションスタックからSecondVCをポップすると、SecondVCからHomeVCに戻って、たとえば文字列などの情報をどのように渡すのですか?Swift:現在のビューコントローラの下のビューコントローラに情報を渡すにはどうすればよいですか?
答えて
あなたは何を行うことは、あなたのセグエに識別子を与え、その後、あなたのHomeViewControllerでprepareForSegueを上書きされ、SecondViewControllerにHomeViewControllerからViewModel
を渡す必要があります:あなたのSecondViewControllerで
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "mySegueIdentifier" {
if let destination = segue.destinationViewController as? SecondViewController {
destination.aViewModel = aViewModel;
}
}
}
あなたはViewModelに宣言する必要があります:
class SecondViewController: UIViewController {
var aViewModel: AViewModel?
//rest of code
}
そして、構造体の型を使用し、ViewModelにを作成します。
struct AViewModel
{
let AValueIWantToPassAround: String
let AnotherValueIWantToPassAround: Int
}
ありがとうございましたが、私はそれを他の方法、つまりSecondViewControllerからHomeViewControllerに戻すのに助けが必要でした。 –
@ aayushi_2303それは悪い設計上の決定です。なぜなら、子ビューは親に情報を渡す必要があります。子ビューコントローラが何かを変更した場合は、それを保持してから親ビューコントローラが別名をリフレッシュする再び表示されたときの永続性をチェックします。 –
しかし、クイックで汚い長期的には、@MargoNicolasPalaciosのようなリファレンスタイプを使用することがあなたの質問に彼のコメントで言及しています。 –
- 1. Swift:現在のビューコントローラは他のビューコントローラと同じコンテキストですか?
- 2. 情報をビューに渡す対象コントローラの現在のビューコントローラの下にあるコントローラ
- 3. 親ビューコントローラに値を渡すにはどうすればいいですか?
- 4. カスタムセルからビューコントローラに情報を送信するにはどうすればいいですか?
- 5. NSUserdefaultsの情報を1つのビューコントローラから別のビューコントローラに移動する
- 6. UIPageViewController現在のビューコントローラ
- 7. タブバーコントローラは、現在のビューコントローラios
- 8. Swiftクラスでビューコントローラのラベルをリアルタイムで更新するにはどうすればよいですか?
- 9. 初期ビューコントローラが表示される前の現在のビューコントローラ
- 10. イメージビューとそのプロパティをあるビューコントローラから別のビューコントローラに渡すにはどうすればよいですか?
- 11. appDelegateからUINavigationcontrollerのビューコントローラの1つに情報を渡す方法
- 12. タブバービューコントローラを別のビューコントローラで隠すにはどうすればいいですか?
- 13. Swift 3ビューコントローラ間でデータを渡す
- 14. 現在のユーザーの資格情報を作成するにはどうすればよいですか?
- 15. エクスプレスセッションから現在のセッション情報を取得するにはどうすればよいですか?
- 16. Swift:ビューコントローラでマスターページ構造を作成するにはどうすればよいですか?
- 17. ビューコントローラから別のビューコントローラにデータを渡す
- 18. ストーリーボードセグの情報を渡すにはどうすればいいですか?
- 19. コレクションビューCell Swiftから別のビューコントローラに画像を渡す
- 20. SwiftビューモデルからObj-cビューコントローラにバインドするにはどうすればいいですか?
- 21. awsebcliから現在のユーザー資格情報を削除するにはどうすればいいですか?
- 22. Xcodeの - どのように別のビューコントローラに最初のビューコントローラから
- 23. ボタンに応じてビューコントローラの情報を変更します
- 24. ビューコントローラから別のビューコントローラに作成されたボタンでUIToolBarを取得するにはどうすればよいですか?
- 25. 1つのビューコントローラでナビゲーションバーを即時に非表示にするにはどうすればよいですか?
- 26. ネストされた子ビューコントローラ内から画面の現在のサイズクラスを確認するにはどうすればよいですか?
- 27. 別のビューコントローラからテーブルビューにデータを挿入するにはどうすればよいですか?
- 28. Xcodeのビューコントローラのコードビューはどのように見えますか?
- 29. ナビゲーションコントローラの別のビューコントローラにデータを渡す
- 30. 2つのビューコントローラ間で変数を渡すときのエラーSwift
HomeからSecondに参照値を渡す場合、必要はありません。自動的に行われます。それが非参照値(クラスではなく構造体のようなもの)の場合は、2番目から3番目までの新しいセグを作成し、初めて同じことをする必要があります。 –
@MagoNicolasPalacios新しいSegueを作成する必要はありません。単に「prepareForSegue」をオーバーライドし、既存のSegueを傍受し、構造体のように値の型(「非参照」と呼んでいます)をSecondViewControllerに渡します。 –
恐ろしい@BrianOgden私は私が動いていたことを書いていました、瞬時に値のタイプ名と参照タイプを忘れました。 –