2014-03-07 26 views
-2

我有兩個視圖的MainViewMainInvoicing如何將一個變量值傳遞給另一視圖正確

的MainView我發送一個整型變量值MainInvoicing

這是我的代碼

in MainInvoicing.h文件我聲明的int類型變種

@property (nonatomic, assign) int myChoice; 

MainView.m文件上的按鈕點擊我打電話的MainInvoicing作爲

MainInvoicing *invoicing = [[MainInvoicing alloc] initWithNibName:@"Invoicing" bundle:nil]; 
[self presentViewController:invoicing animated:YES completion:nil]; 
invoicing.myChoice = 1; 
從此我 MainInvoicing

完美地叫,但是myChoice等於零'0'。而它應該是「1」

我在收到此值MainInvoicing.m作爲

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self Start]; 
} 

和啓動方法是

- (void) Start 
{ 
switch (myChoice) 
{ 
    case 1: 
     NSLog(@"value is %d",myChoice); 
     break; 
    case 2: 
     NSLog(@"value is %d",myChoice); 
     break; 
    default: 
     NSLog(@"Oooopppss...%d",myChoice); 
     break; 
} 
} 

我總是在默認的一部分......。

我在哪裏錯了或任何建議,以獲得正確的價值......請幫助...

+4

移動這一行invoicing.myChoice = 1;在呈現viewController之前。 – Greg

+0

@Greg謝謝你,你總是樂於助人......。它的工作原理... :) –

+0

你想我添加這個作爲答案,所以你可以接受它嗎? – Greg

回答

1

你應該你之前分配值本視圖控制器:

MainInvoicing *invoicing = [[MainInvoicing alloc] initWithNibName:@"Invoicing" bundle:nil]; 
invoicing.myChoice = 1; 
[self presentViewController:invoicing animated:YES completion:nil]; 
+0

謝謝格雷格,你是救命恩人 –

0

格雷戈在他的評論中說,它的所有有關的代碼順序。如果你看看你的代碼,你應該看到它被調用的順序。

MainInvoicing *invoicing = [[MainInvoicing alloc] initWithNibName:@"Invoicing" bundle:nil]; 
[self presentViewController:invoicing animated:YES completion:nil]; 
    [self Start]; 
     switch (myChoice) 
     { 
      case 1: 
       NSLog(@"value is %d",myChoice); 
       break; 
      case 2: 
       NSLog(@"value is %d",myChoice); 
       break; 
      default: 
       NSLog(@"Oooopppss...%d",myChoice); 
       break; 
     } 
invoicing.myChoice = 1; 

所以您要訪問myChoice變量設置之前,這就是爲什麼你得到0而不是1

與所有的這麼說,有你的代碼的可能性工作因爲它的寫法是因爲viewDidLoad函數並不總是被串行調用。但是你不應該期望它總是能夠工作,而且你應該在調用可以立即使用它們的代碼之前初始化變量。

接受格雷格的回答,我只是給這個問題增加了一些解釋。

+0

感謝您的解釋...其幫助完全給我..:) –

相關問題