私は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. 情報をビューに渡す対象コントローラの現在のビューコントローラの下にあるコントローラ
- 2. 親ビューコントローラに値を渡すにはどうすればいいですか?
- 3. カスタムセルからビューコントローラに情報を送信するにはどうすればいいですか?
- 4. NSUserdefaultsの情報を1つのビューコントローラから別のビューコントローラに移動する
- 5. UIPageViewController現在のビューコントローラ
- 6. タブバーコントローラは、現在のビューコントローラios
- 7. Swiftクラスでビューコントローラのラベルをリアルタイムで更新するにはどうすればよいですか?
- 8. 初期ビューコントローラが表示される前の現在のビューコントローラ
- 9. appDelegateからUINavigationcontrollerのビューコントローラの1つに情報を渡す方法
- 10. Swift 3ビューコントローラ間でデータを渡す
- 11. ビューコントローラから別のビューコントローラにデータを渡す
- 12. ストーリーボードセグの情報を渡すにはどうすればいいですか?
- 13. SwiftビューモデルからObj-cビューコントローラにバインドするにはどうすればいいですか?
- 14. awsebcliから現在のユーザー資格情報を削除するにはどうすればいいですか?
- 15. ボタンに応じてビューコントローラの情報を変更します
- 16. Xcodeの - どのように別のビューコントローラに最初のビューコントローラから
- 17. ネストされた子ビューコントローラ内から画面の現在のサイズクラスを確認するにはどうすればよいですか?
- 18. ナビゲーションコントローラの別のビューコントローラにデータを渡す
- 19. Xcodeのビューコントローラのコードビューはどのように見えますか?
- 20. すべてのナビゲーションコントローラとビューコントローラにカスタムナビゲーションバー(title + titleView)を設定するにはどうすればよいですか?
- 21. モーダルで表示されるビューコントローラで現在のモーダルセグを実行するにはどうすればよいですか?
- 22. スウィフトどのように3つのビューコントローラ
- 23. iOSの現在のビューコントローラの前にすべてのビューコントローラを見つける方法は?
- 24. 現在のビューコントローラを終了する新しいビューコントローラを表示した後すぐに
- 25. 1つのビューコントローラから別のビューコントローラにデータを渡す。 iOS <= 4対iOS 5
- 26. フォーム情報を別のページのGoogleマップに渡すにはどうすればよいですか?
- 27. swift:最初のビューコントローラでスワイプして別のビューコントローラを表示
- 28. 最初の起動後に初期ビューコントローラを変更するにはどうすればよいですか?
- 29. XCode 8のビューコントローラにビデオを追加するにはどうすればよいですか?
- 30. ビューコントローラのUITableViewへの参照を取得するにはどうすればよいですか?
HomeからSecondに参照値を渡す場合、必要はありません。自動的に行われます。それが非参照値(クラスではなく構造体のようなもの)の場合は、2番目から3番目までの新しいセグを作成し、初めて同じことをする必要があります。 –
@MagoNicolasPalacios新しいSegueを作成する必要はありません。単に「prepareForSegue」をオーバーライドし、既存のSegueを傍受し、構造体のように値の型(「非参照」と呼んでいます)をSecondViewControllerに渡します。 –
恐ろしい@BrianOgden私は私が動いていたことを書いていました、瞬時に値のタイプ名と参照タイプを忘れました。 –