2013-10-29 189 views
2

我有一個容器視圖,它使用故事板嵌入segue來加載嵌入的靜態表視圖。賽格ID是'容器'。如何將數據從父窗口傳遞給子窗口?

當我運行下面的代碼時,prepareForSegue永遠不會被調用,所以沒有數據從父對象傳遞給子對象。

- (void)viewDidLoad { 
[super viewDidLoad]; 

if ([sGender isEqualToString:@"MALE"]) { 
    containerGender = @"MALE"; 

    if ([containerGender isEqualToString:@"MALE"]){ 
     NSLog(@"MALE"); 
    }else{ 
     NSLog(@"BROKEN"); 
    } 
} 
else if ([sGender isEqualToString:@"FEMALE"]) { 
    containerGender = @"FEMALE"; 
} 
} 


-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"CONTAINER"]) { 
    if([containerGender isEqualToString:@"MALE"]) { 

     if ([containerGender isEqualToString:@"MALE"]){ 
      NSLog(@"MALE"); 
     }else{ 
      NSLog(@"BROKEN"); 
     } 


     SportTableViewController *tableView = segue.destinationViewController; 
     tableView.sportGender = @"MALE";  
    } 
    else if ([containerGender isEqualToString:@"FEMALE"]){ 
     SportTableViewController *tableView = segue.destinationViewController; 
     tableView.sportGender = @"FEMALE";  
    } 
} 
} 

我的問題是:

一)爲什麼prepareForSegue不叫?故事板是否嵌入Segue的行爲與標準Seque行爲不同?

b)有沒有更好的方式將數據從容器視圖傳遞到嵌入表?

也請忽略凌亂的執行/各種日誌測試,只是我試圖找出什麼是錯誤的。

+0

[在視圖控制器之間傳遞數據](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

+0

其實它不是,我很清楚如何通過數據。它顯然是我的問題來自於對容器視圖如何工作的一個簡單誤解。 –

回答

1

我的問題實際上源於對容器視圖如何加載其嵌入視圖的誤解。顯然,這一切都發生在viewDidLoad之前。這意味着我將sGender轉換爲containerGender的時間太晚了。

我通過直接將sGender傳遞給嵌入式視圖來修復它。我原以爲我已經試過了,但昨天顯然是一個緩慢的日子;)。

0

你可以做到這一點..

嘗試 在childViewController SET-

@屬性(非原子,保留)parentViewController *父母;

在ParentViewController SET-

ChildViewController *孩子=

[[childviewController的alloc] INIT]; child.parent = self;

它會在childview中設置你的父類,你可以通過子視圖控制器中的父對象獲取數據。

相關問題