2016-11-17 4 views
0

私のタブバーコントローラには4つのタブがあり、VC1に6つのテキストフィールドがあり、VC2、VC3のラベルを表示するために入力されたデータを使用します。& VC4。私は、TabBarControllerサブクラスにデータを追加し、それを残りのVCで使用することについて読んだが、実装には固執していた。私は絶対的な初心者ですし、コードの実装へのリンクやリンクは素晴らしいでしょう。タブバーコントローラ内の子タブ間のデータ転送

答えて

2

これを試してみてください:

私はUITabBarController 2児コントローラTab1ViewControllerTab2ViewControllerを作成しました。ストーリーボードの

スクリーンショット:

enter image description here

コード:

class Tab1ViewController: UIViewController 
{ 
    @IBOutlet weak var testTextField: UITextField! 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 
} 

class Tab2ViewController: UIViewController 
{ 
    @IBOutlet weak var testLabel: UILabel! 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    override func viewWillAppear(_ animated: Bool) 
    { 
     super.viewWillAppear(animated) 
     let tab1Controller = self.tabBarController?.viewControllers?.first as! Tab1ViewController 
     self.testLabel.text = tab1Controller.testTextField.text 
    } 
} 

同様にあなたが4つのタブや他のテキストフィールドを作成することができます。

の詳細を参照してください:変更についてのあなたのアプリケーションには何も通知するNotificationCenterを使用することができますHow do I pass data from a tab bar controller to one of its tabs?

+0

これは私のケースで非常にうまくいった、ありがとう。 –

+0

あなたはその答えを受け入れたものとしてマークすることができます。 – PGDev

+0

これは私のニーズに合ってくれてありがとう、ありがとう。 'viewWillAppear'の説明と、カプセル化によって変数値にアクセスする方法を好きになるでしょう – Sami

0

。たとえば、UITextFieldtextプロパティが変更されたときに発生する変更をビューコントローラがリッスンできるようにすることができます。次に、そのビューコントローラでアクションを実行できます。

たとえば、最初のビューコントローラーに6つのテキストフィールドがある場合、最初のビューコントローラーのテキストフィールドにtextプロパティが変更されたときに、最後のビューコントローラーが通知を受信するようにすることができます。最後のView Controllerは、変更が検出されたときに必要な処理を実行できます。

Hereはこれを非常にうまく説明するチュートリアルです。

関連する問題