テキストフィールドとボタンを最初に表示しています。ボタンをクリックすると、secondビューをナビゲートします。 私の質問は、テキストフィールドの値をラベルテキストに設定したいのですか?1つのビューのtextfied値を別のビューラベルに設定します
Plzヘルプme!あなたは、テキストフェイルド値を格納し、ちょうどあなたの第2のビューコントローラに最初のViewControllerクラスの参照を作成するためにあなたの最初のビューコントローラのための1つのグローバル変数を作成することができます
テキストフィールドとボタンを最初に表示しています。ボタンをクリックすると、secondビューをナビゲートします。 私の質問は、テキストフィールドの値をラベルテキストに設定したいのですか?1つのビューのtextfied値を別のビューラベルに設定します
Plzヘルプme!あなたは、テキストフェイルド値を格納し、ちょうどあなたの第2のビューコントローラに最初のViewControllerクラスの参照を作成するためにあなたの最初のビューコントローラのための1つのグローバル変数を作成することができます
...次に、あなたが作成することにより、可変
にアクセスすることができますラベルやその他のView Controllerなどの特定のタイプを参照するためのivarは、結合する必要がないものを結合しています。代わりに、最初のタブビューコントローラを2番目のタブビューコントローラの代理人にすることができます。だからあなたのアプリケーションの代理人でこれを行う。あなたはOptionsViewControllerでIVAR必要があることを意味し
OptionsViewController *optionsViewController = // ... get this from the tab view
FirsTabViewController *firstTabViewController = // ... same here
[optionsViewController setDelegate:firsTabViewController];
:あなたが変更をトリガーするために好きなイベント時に、次に
@property (assign) id delegate;
をデリゲートが応答できる場合は、コントローラを表示し、あなたのオプションで発生し、参照あなたが指定したセレクタ。例:
- (void)someEventHappenedLikeTyping:(id)sender;
{
if ([delegate respondsToSelector:@selector(setOptionsString:)]
[delegate performSelector:@selector(setOptionsString:) withObject:[label text]];
}
特定のオブジェクトタイプを指定したことはありません。デリゲート(idとして宣言された)がそのセレクタに応答できるかどうかを確認するだけです。可能であれば、それは言われたことをし、そうでなければ静かです。これが機能するために
、あなたのFirstTabViewControllerでoptionsStringためIVARを必要とするので、それはとしてヘッダに宣言されます:
@property (copy) NSString *optionsString;
、その後.Mでそれを@synthesize。これにより、-setOptionsStringが-someEventHappenedLikeTypingメソッドで呼び出される有効なセレクタになります。
どのビューコントローラを参照するかを変更する必要がある場合は、ヘッダーに入り、参照されるivarのタイプを変更する必要はありません。オプションのビューコントローラの代理人であるビューコントローラ内のセレクタ(これは非公式プロトコルと呼ばれます)を実装するだけで済みます。
そこにはちょっとした食べ物があります。希望が役立ちます。追加したコードでさらにデカップリングが行われますが、やはり単純な作業のために過度の作業になる可能性があります。明確化が必要な場合や、さらにデカップリングを意味することを理解したい場合はお知らせください。
p.s. 2つのタブバービューコントローラ間でデータを共有する必要がある場合は、設計上の欠陥があることを意味します。あなたのオプションが表示からあなたが店の好みに欠けている場合は、ちょうどあなたがバックであなたのメインタブでNSUserDefaultsから引き出すことができます次に
[[NSUserDefaults standardUserDefaults] setObject:[label text] forKey:@"option1"];
[[NSUserDefaults standardUserDefaults] synchronize];
を呼び出す必要があります。
NSString *option1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"option1"];
//How to access data from one view to another view?
ではオプション1リファレンスで何かを行います