在视图控制器之间传递变量

时间:2012-07-20 10:25:24

标签: ios properties uiviewcontroller uistoryboard uistoryboardsegue

我正在使用此功能在Xcode 4.3中切换视图。

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

我想在页面之间传递一些参数。我怎么能这样做?

3 个答案:

答案 0 :(得分:39)

performSegueWithIdentifier:sender:年视图控制器将调用

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

假设您的新视图控制器有一些要设置的属性:

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

答案 1 :(得分:5)

这个问题对于在视图控制器之间传递数据有一个非常好的正确解释:

Passing Data between View Controllers

答案 2 :(得分:3)

以下是Pfitz的答案,但是我使用一个例子让那些刚接触Objective-C的人更容易理解:

  1. 在您的destinationViewController.h文件中,将变量的属性设置添加到'接收'来自source controller.m文件的值

    @property (nonatomic) int billIdReceivingVote;
    
  2. 将destinationViewController.h导入sourceViewController.m文件:

    // VOLViewController.m
    #import "VOLVoteViewController.h
    
  3. prepareForSegue方法添加到sourceViewController.m文件并传递变量

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