2017-12-28 15 views
0

私は2つのビューコントローラ 1. ViewControllerA 2. ViewControllerBビューコントローラAボタンのタイトルをビューコントローラBから変更する可能性はありますか?例えば

ViewControllerAは「国家の選択」という名前のボタンがあり、idが「buttonStateは、」私は「タミル・ナードゥ州」のように、そのボタンのタイトルを変更したい今を持っていますViewControllerBで。

私は

let vc1 = ViewControllerA() 

vc1.buttonState.setTitle("Tamil Nadu", for: .normal) 

怒鳴るコードを試してみましたが、それは作品と"unexpectedly found nil while unwrapping an Optional value"

今すぐあなたの助けを探していますされ、エラーを与えていません。ありがとうございます

+0

このようなUIコンポーネントを変更することはできません。 –

+0

コンセプトを試してみました –

+0

ViewControllerAの新しいインスタンスを作成しているだけで、元のインスタンスには影響せず、buttonStateのようなサブビューも設定されません。ViewControllerBが(おそらくAppDelegateで)参照できる、またはより広範なデータモデルを使用できるオリジナルのViewControllerAへの参照を保持する必要があります。 –

答えて

0

ボタンでタイトルを設定する前に、このボタンが既に初期化されていることを確認してください。

vc1からbuttonstateのインスタンスをlet vc1 = ViewControllerA()のように取得するには、vc1のinit()メソッドでbuttonStateのオブジェクトを作成する必要があります。もちろん このbuttonStateはXIB /ストーリーボードから接続されている場合、その後、あなたが呼び出す必要があります:

その後、
let vc1 : ViewControllerA = storyboard.instantiateViewController(withIdentifier: "identifierVCA") as! ViewControllerA 

if let buttonState = vc1.buttonState { 
    buttonState.setTitle("Tamil Nadu", for: .normal) 
} 
0

私は私が理解できるように2つの場合があると思うあなたの質問を1として

CASE 1:それはなりますので、あなたはViewControllerをB

からのViewController Aを推進している場合そのViewControllerをAの新しいインスタンスを作成し、その中で、あなたは任意の文字列を渡すことができますし、ラベルのタイトルとして設定し、ただ1つの文字列変数を宣言し、値を設定するビューコントローラを押しながら

例(スウィフト): -

let viewControllerA = self.storyboard?.instantiateViewController(withIdentifier: "viewControllerA") as! viewControllerA 

viewControllerA.strBtnTitle = "Tamil Nadu" 

self.navigationController?.pushViewController(viewControllerA, animated: true) 

CASE 2:あなたはViewControllerをBであり、あなたは、あなたが以前のViewControllerにパスバックデータのためのプロトコル、デリゲートを使用する必要があり、その場合には

だから、ViewControllerをAに戻りたいし、そのためのあなたこれを参照することができますb詳細

Passing Data between View Controllers

ためELOWリンクは、それが助けなら、私に教えてください。

0

変数を宣言すると、!;それはあなたがそれについて非常に慎重でなければならないことを意味します。 ? vc1.buttonStateがnilでない場合、あなたのケースでは、あなたが今

vc1.buttonState?.setTitle("Tamil Nadu", for: .normal) 

を使用する必要がありますので、変数は、nilにできることの状態、のsetTitleにのみ実行されます。

関連する問題