2017-07-31 18 views
-4

図では、エントリウィンドウのデータベースからユーザに応じてメニューを描画しました。これらの受信メニューは、メニュー監視コントローラセクションで送信する必要があります。間にSWRevealライブラリがあります。swift3コントローラ間のデータ転送

このデータはどのように転送できますか?

メインストーリーボードの画像:

Main storyboard image

+0

異なるコントローラ間でデータを渡すには、performSegueメソッドを使用する必要があります。 'segue.destination'プロパティはあなたに来るコントローラのオブジェクトを与え、必要に応じてデータを渡すことができます。 – Priyal

+3

[ビューコントローラと他のオブジェクト間でデータをどのように共有するのですか?](Swiftではどのようにデータを共有していますか?)(https://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – Priyal

+0

@Priyal私はこの質問をする前に研究をしました。私は結論に達することができないので、私は質問します。あなたが送ったリンクを見た –

答えて

0

あなたはストーリーボードを使用しているので、あなたの最初のビューコントローラは、それがためにあります正確に何である、prepareForSegueをオーバーライドすることができます。 UIStoryboardSegueオブジェクトは、このメソッドが呼び出されたときに渡され、宛先ビューコントローラへの参照を含みます。 ここで、渡す値を設定できます。あなたのケースでは

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "MySegueID" { 
     if let destination = segue.destinationViewController as? SecondController { 
      destination.myInformation = self.myInformation 
     } 
    } 
} 

ATAユニOBSログインビューコントローラの直接の子ではないので、したがって、あなたは最初のビューコントローラを明らかにするために情報を渡す必要があり、そこからATAユニOBSにコントローラを表示します。

myInformationは、1つのビューコントローラから次のビューコントローラに渡す必要があるデータを保持するビューコントローラのプロパティです。明らかに、各コントローラーで同じ名前を持つ必要はありません。

もう1つの提案は、データコンテナシングルトンを作成することです。アプリケーションの生活の中で一度だけ作成され、アプリの存続期間中存続するオブジェクト。

このアプローチは、アプリのさまざまなクラス間でグローバルなアプリデータを使用可能/変更可能にする必要がある場合に適しています。ここで

は、第3及びませんので、一般的な方法はUserDefaultsにデータを保存することですシングルトン https://medium.com/@chan.henryk/singleton-in-swift-3-4383875a5d4d

を実装する方法についての素晴らしい記事です。 UserDefaultsにどのような種類のものを保存できるかを理解する必要があることを念頭に置いてください。 ここでは、UserDefaultsについて少し詳細を読むことができます: - http://www.ios-blog.co.uk/tutorials/objective-c/storing-data-with-nsuserdefaults/

これは、あなたがUserDefaults

let defaults = UserDefaults.standard 
if defaults.string(forKey: "market") == nil{ 
    defaults.set("region", forKey: "market") 

にデータを設定することができますし、次

を行うことができますUserDefaultsからデータを取得する方法です
region = defaults.string(forKey: "market")!    

さらに、複数のビューコントローラ間でデータを転送する方法について詳しく説明しています。 How do you share data between view controllers and other objects in Swift?

+0

ありがとうございます。 –

関連する問題