2013-05-16 1 views
0

Итак, проблема: как может делегировать метод запустить первый, так что я могу использовать ключ в viewDidLoad ИЛИ: есть ли способ использовать этот ключ, пока viewDidLoad если не может сделать делегат выполнить до viewDidLoad?

+1

как вы посылаете ключ делегата ..? – Bonnie

+0

Чтобы передать ключ, вы вызываете какой-либо метод в VCA или просто устанавливаете какое-либо свойство в VCB из VCA ??? –

+0

установить свойство в VCB из VCA и использовать его в методе ViewDidLoad VCB @Anil – user2261777

ответ

0

Почему вы не можете сделать что-то вроде этого:

позволяет сказать, что ключ является String,

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) Когда вы представляете ViewControllerB из ViewControllerA сделать это так,

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

Написать метод Инициализатора в 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; 
} 

После инициализации viewDidLoad будет вызвана, когда вы можете использовать эти значения свойств.

Cheers!
Amar.

0

Если вы просто хотите отправить переменное значение в ViewControllerB из ViewControllerA, тогда создайте свойство этой переменной в ViewControllerB с полномочием readWrite и назначьте его в ViewControllerA непосредственно перед переходом на ViewControllerB.

если это строка переменной передать запись в 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];