prepareForSegue通过引用目标视图控制器传递值

时间:2013-05-08 12:00:53

标签: ios storyboard uistoryboard uistoryboardsegue xcode-storyboard

我在我的一个应用程序中使用storyboard,并且在prepareForSegue方法中将属性从SourceViewController传递到DestinationViewController时,传递的属性通过引用传递而不是通过值传递。这对我来说会造成一些麻烦,就像在目标视图控制器中一样,如果用户摆弄了背面的值和点击,那么我在SourceViewController中获得了一个我不想要的更新值。

请参阅以下内容以获取有关该问题的更多信息

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{if([[segue identifier] isEqualToString:@"DestinationView"])
    {
        DestinationViewController  *destinationViewController = [segue destinationViewController];
        [destinationViewController setActivity:activity];
        //Here the value of activity is passed by reference. I have verified the same by checking the address of activity variable in Variable pane of Xcode in Source and destination view controller
}

现在我不确定如何在上述情况下只传递值而不是引用。

1 个答案:

答案 0 :(得分:2)

尝试使用它的副本

    [destinationViewController setActivity:[activity copy]];

如果需要,实施其委托copywithZone

- (id)copyWithZone:(NSZone *)zone