【问题标题】:Passing variables between view controllers在视图控制器之间传递变量
【发布时间】:2012-07-19 14:52:56
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过使用导航控制器。传值真的很简单
  • 不,我没有尝试导航控制器。我在情节提要中使用常规按钮和 segue。

标签: ios properties uiviewcontroller uistoryboard uistoryboardsegue


【解决方案1】:

这是来自 Pfitz 的答案,但我通过一个示例让 Objective-C 新手更容易理解:

  1. 在您的destinationViewController.h 文件中,将变量的属性设置添加到从您的源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];
    }
    

【讨论】:

    【解决方案2】:

    performSegueWithIdentifier:sender: 之后,您的视图控制器将调用

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

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

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

    【讨论】:

    • 所以,我像你说的那样设置了属性,我如何从该属性中读取值。另外,如果我需要将多个变量传递给下一个视图怎么办?
    • 对于多个变量,使用多个属性并从属性中读取使用 ... = self.property(在您定义该属性的视图控制器中)
    • 我明白这一点,但我不确定如何在“NextView”中获取该数据。
    • 按照 Pfitz 的方法,我在目标视图控制器中创建了一个方法来处理任何初始化或自定义。例如,在 Pfitz 的示例中,将 myVC.propertyToSet 替换为 [myVC setProperty1:self.property1 viewTitle:@"My Title" delegate:self];
    • 好的,我明白了。我只是很困惑如何在 NextView 中访问该变量。我应该定义一个同名的属性,它会被自动设置吗?
    【解决方案3】:

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

    Passing Data between View Controllers

    【讨论】:

    • 是的,该页面上的解释很好,但他们使用 pushViewController 进行视图更改,但我想使用 performSegueWithIdentifier。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2018-07-03
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多