12

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

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

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

4

3 回答 3

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
}
于 2012-07-20T10:34:29.410 回答
5

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

在视图控制器之间传递数据

于 2012-07-20T10:28:56.907 回答
3

这是 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];
    }
    
于 2014-04-09T03:43:10.330 回答