1.デリゲートでキーを
ViewControllerA
送信ViewControllerB
2.
ViewControllerB
ロードされたときのキー値は正しいですが、キーを使用する必要がありますviewDidLoad
したがって、問題は次のとおりです:メソッドを最初に実行して、キーを使用できるようにするにはどうすればよいですか?OR:前にデリゲートを実行できない場合viewDidLoad
に、このキーを使用する方法はありますか?viewDidLoad
viewDidLoad
1.デリゲートでキーをViewControllerA
送信ViewControllerB
2.ViewControllerB
ロードされたときのキー値は正しいですが、キーを使用する必要がありますviewDidLoad
したがって、問題は次のとおりです:メソッドを最初に実行して、キーを使用できるようにするにはどうすればよいですか?OR:前にデリゲートを実行できない場合viewDidLoad
に、このキーを使用する方法はありますか?viewDidLoad
viewDidLoad
なぜあなたはこのようなことをすることができません:
あなたのキーが文字列であるとしましょう。
1) ViewControllerB.hに追加
@property (nonatomic, copy) NSString *keyFromParent;
- (id)initWithNibName:(NSString *)nibNameOrNil WithKey:(NSString *)key bundle:(NSBundle *)nibBundleOrNil;
2) ViewControllerB.mでinitWithNibNameメソッドを次のように置き換えます
- (id)initWithNibName:(NSString *)nibNameOrNil WithKey:(NSString *)key bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.keyFromParent = key;
}
return self;
}
3) ViewControllerAからViewControllerBを提示するときは、次のようにします。
ViewControllerB *controller = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" WithKey:KEY_FROM_DELEGATE bundle:nil];
[self presentViewController:controller animated:YES completion:nil];
4) これで、 ViewControllerBのviewDidLoadメソッドでViewControllerAから渡された値であるkeyFromParentを使用できます。
この回答がお役に立てば幸いです!!
以下に示すようViewControllerB
なもので初期化メソッドを記述しますinitWithNibName:bundle:key:delegate:
- (id) initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
key:(NSString*)aKey
delegate:(id) aDelegate
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
// Save aDelegate and aKey as properties
}
return self;
}
init の後、これらのプロパティ値を使用できる場所で viewDidLoad が呼び出されます。
乾杯!
アマール。
ViewControllerA から ViewControllerB に変数値を送信するだけの場合は、ViewControllerB にその変数のプロパティを readWrite 権限で作成し、ViewControllerB に移動する直前にそれを ViewControllerA に割り当てます。
渡す文字列変数の場合はviewControllerB.hに書き込む
@property (nonatomic, retain) NSString *variableName;
そして、viewControllerB に移動するときは ViewControllerA で
viewControllerB *obj = [[viewControllerB alloc] initWithNibName:@"viewControllerB" bundle:nil];
obj.variableName = @"Your Value";
[self.navigationController pushViewController:obj animated:YES];
[obj release];