0
  • 1.デリゲートでキーをViewControllerA送信ViewControllerB

  • 2.ViewControllerBロードされたときのキー値は正しいですが、キーを使用する必要がありますviewDidLoad

したがって、問題は次のとおりです:メソッドを最初に実行して、キーを使用できるようにするにはどうすればよいですか?OR:前にデリゲートを実行できない場合viewDidLoadに、このキーを使用する方法はありますか?viewDidLoadviewDidLoad

4

3 に答える 3

0

なぜあなたはこのようなことをすることができません:

あなたのキーが文字列であるとしましょう。

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) これで、 ViewControllerBviewDidLoadメソッドでViewControllerAから渡された値であるkeyFromParentを使用できます。

この回答がお役に立てば幸いです!!

于 2013-05-16T06:20:54.103 に答える
0

以下に示すよう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 が呼び出されます。

乾杯!
アマール。

于 2013-05-16T06:14:50.500 に答える
0

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];
于 2013-05-16T06:32:43.120 に答える