12

我正在使用此函數在Xcode 4.3中的視圖之間切換。在視圖控制器之間傳遞變量

[self performSegueWithIdentifier:@"NextView" sender:self]; 

我想在頁面之間傳遞一些參數。我怎樣才能做到這一點?

+0

沒有ü嘗試使用導航控制器代替。它是非常簡單的通過值 – WaaleedKhan 2012-07-20 10:30:01

+0

不,我沒有嘗試導航控制器。我在故事板中使用常規按鈕並繼續播放。 – bla0009 2012-07-20 11:12:09

回答

40

performSegueWithIdentifier:sender:後您的觀點。控制器會調用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

假設你的新視圖控制器具有一些propertys to set:

if ([[segue identifier] isEqualToString:@"NextView"]) { 
    MyViewController *myVC = [segue destinationViewController]; 
    myVC.propertyToSet = // set your properties here 
} 
+0

因此,我設置了像你說的屬性,以及如何從該屬性讀取值。而且,如果我需要將多個變量傳遞給下一個視圖呢? – bla0009 2012-07-20 10:51:17

+0

對於多個變量使用多個屬性,並從屬性中讀取使用... = self.property(在您的視圖控制器中,您定義該屬性) – Pfitz 2012-07-20 11:04:54

+0

我明白,但我不知道如何獲取「新思維」。 – bla0009 2012-07-20 11:11:13

5

這個問題有傳遞數據的視圖控制器之間的一個非常好的和正確的解釋:

Passing Data between View Controllers

+1

是的,這是很好的解釋,但他們正在使用pushViewController視圖更改,但我想使用performSegueWithIdentifier。 – bla0009 2012-07-20 10:47:21

3

這裏是Pfitz答案,但我做了一點比較容易理解爲鄉親使用例如誰是新的Objective-C:

  1. 在你destinationViewController.h文件中添加屬性設置變量

    // VOLViewController.m 
    #import "VOLVoteViewController.h 
    
  2. :從您的源文件Controller.m或者

    @property (nonatomic) int billIdReceivingVote; 
    
  3. 導入你的destinationViewController.h您sourceViewController.m文件 '接收' 值

  4. 添加prepareForSegue方法您sourceViewController.m文件和傳遞變量

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
        VOLVoteViewController *myDestinationViewController = [segue destinationViewController]; 
    
        // myDestinationViewController.variable = sourceViewController variabe 
        myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue]; 
    } 
    
相關問題