2014-01-23 24 views
0

我是iOS開發人員和QuickDialog中的新成員。將數據從ViewControllerA傳遞到ViewControllerB(QuickDialog)

我想從ViewControllerA傳遞數據到ViewControllerB。

這是工作,但在ViewControllerB我有一個問題。

在ViewControllerA.m

-(void) goToViewControllerB 
{ 
    ViewControllerB *viewControllerB = [[ViewControllerB alloc]init]; 
    // send data 
    viewControllerB.ownerName = @"TestData"; 
    [self.navigationController pushViewController:viewControllerB animated:YES]; 
} 

在ViewControllerB.h

@property (nonatomic, strong) NSString *ownerName; 

在ViewControllerB.m

-(id) init 
{ 
    NSLog(@"init"); 
    NSLog(@"ownerName : %@", _ownerName); 

    self = [super initWithRoot:[self createViewElement]]; 

    return self; 
} 

-(void) viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"viewDidLoad"); 
    NSLog(@"ownerName : %@", _ownerName); 
} 

- (void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    NSLog(@"viewDidLoad"); 
    NSLog(@"ownerName : %@", _ownerName); 
} 

在Method init中,我使用QuickDialog創建本頁的樣式。

在方法createViewElement我想顯示_ownerName的數據,但它是NULL。

這是本示例代碼的輸出。

>> init 
>> ownerName : (null) 
>> viewDidLoad 
>> ownerName : TestData 
>> viewAppear 
>> ownerName : TestData 

我想要在Method createViewElement中使用此數據。

如何解決它。

P.S.我試圖在viewDidLoad或viewWillAppear中調用方法createViewElement,但它不起作用。

+1

如果你是新到iOS,有沒有你不使用故事板的原因? – nhgrif

+0

在我們的項目中只使用代碼。 –

+0

你顯然無法在數據到達之前引用數據。一個選項是將ownerName作爲參數傳遞給init。 –

回答

1

在您設置值爲ownerName之前調用您的init方法ViewControllerB。查看你的第一個代碼片段。你可以改變你的init接受這​​樣的字符串:

- (id)initWithOwner:(NSString*)theOwnerName 

,然後修改ViewControllerA代碼傳遞所有者的名稱是這樣的:

viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"]; 
+0

非常感謝。是工作! ^^ –