2013-05-16 76 views
0
  • 1. ViewControllerA之前,如何委託方法運行發送ViewControllerB與代表的關鍵viewDidLoad中

  • 2.當ViewControllerB被加載鍵值是正確的,但我需要使用密鑰viewDidLoad

所以問題是:如何可以先委託方法運行,所以我可以在viewDidLoad使用鑰匙?或:有沒有使用這個鍵的同時viewDidLoad如果不能讓代表0之前運行方式?

+1

你是如何發送委託鍵..? – Bonnie

+0

爲了傳遞密鑰,您正在調用VCA中的任何方法,或者只是從VCA中設置VCB中的任何屬性? –

+0

從VCA中設置VCB中的屬性,並且需要在VCB的ViewDidLoad方法中使用它@Anil – user2261777

回答

0

爲什麼你不能做這樣的事情:

可以說,你的密鑰是一個字符串,在你ViewControllerB.h

1)添加

@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)現在你可以使用keyFromParent這是從ViewControllerA傳遞的值viewDidLoad方法ViewControllerB

希望這個答案能幫助你!

+0

Thx,這真的很有幫助! – user2261777

+0

不客氣! – Ushan87

0

ViewControllerBinitWithNibName: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; 
} 

初始化後的viewDidLoad中將調用,您可以使用這些屬性值。

乾杯!
Amar。

0

如果您只是想從ViewControllerA向ViewControllerA發送一個變量值,然後在具有readWrite權限的ViewControllerB中創建該變量的屬性,並在導航到ViewControllerB之前將其分配給ViewControllerA。

如果字符串變量傳遞 寫在viewControllerB.h

@property (nonatomic, retain) NSString *variableName; 

和ViewControllerA當你導航到viewControllerB

viewControllerB *obj = [[viewControllerB alloc] initWithNibName:@"viewControllerB" bundle:nil]; 

obj.variableName = @"Your Value"; 
[self.navigationController pushViewController:obj animated:YES]; 
[obj release];