2013-04-21 143 views
0

進出口設立一個IBAction爲改變一個錶行後視圖之前選擇&完成按鈕被按下。的iOS:設置屬性更改查看

然而,當我運行presentViewController:動畫我失去我navigationController。

所以後來我沒有辦法去任何地方,然後如果我做,而不是「performSegueWithIdentifier」我的屬性不保存。所以沒有值傳遞...例如:

ViewController *addViewController = (ViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"V_SignIn"]; 
addViewController.LoadAction = @"NoSession"; 
[addViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
[self presentViewController:addViewController animated:YES completion:NULL]; 

^^該代碼的作品,但我刪除導航工具欄...

ViewController *addViewController = [[ViewController alloc] init]; 
addViewController.LoadAction = @"TEST"; 
[self performSegueWithIdentifier:@"segue" sender:self]; 

^^執行Segue公司罰款,但「LoadAction」變種等於(NULL)時,我的NSLog它在新視圖。

基本上,我該怎麼設置,而無需通過與addViewController VAR更改視圖跟隨@property?謝謝。

回答

3

在你的第一個方案,而不是-presentViewController:animated:completion:,您需要使用您的-pushViewController:animated:導航控制器,以避免隱藏它(相反,你會使用-popViewController:animated:,也稱爲導航控制器上,將其關閉,而不是-dismissViewControllerAnimated:completion: ):

ViewController *addViewController = (ViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"V_SignIn"]; 
addViewController.LoadAction = @"NoSession"; 
[self.navigationController pushViewController:addViewController animated:YES]; 

由於北斗星指出,在第二種情況下,你需要做你的addViewController配置-prepareForSegue:sender:像這樣:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"segue"]) { 
     ViewController *addViewController = (ViewController*)segue.destinationViewController; 
     // perform setup on addViewController 
     addViewController.LoadAction = @"TEST"; 
     // ... 
    } else if ([segue.identifier isEqualToString:@"someOtherSegue"]) { 
     // ... 
    } 
} 
+0

你,先生,是我的救命恩人! – 2013-04-22 04:14:27

2

從代碼的第二部分,只要使用[self performSegueWithIdentifier:@"segue" sender:self];來創建和顯示新的視圖。還實現- prepareForSegue:sender:(在觸發上面的代碼視圖控制器)來執行新的視圖控制器的配置。

+0

感謝ÿ我們的幫助! – 2013-04-22 04:19:04