将NSMutableArray传递给另一个视图控制器

时间:2013-12-02 03:25:31

标签: ios cocoa-touch uiviewcontroller

我一直在尝试将一个数组从一个视图控制器带到另一个视图控制器,但出于某种原因,当我通过它并尝试使用它时,它的值为nil。我已经看到很多方法可以在这里做到,但它们都没有为我工作。我正在使用UINavigationController并使用push segues更改视图控制器(如果有任何帮助),并且我在一个视图控制器中创建一个可变数组并尝试在下一个视图控制器中读取它。我会把我的代码放进去,但我宁愿重新开始,因为我不知道我的代码什么是正确的,试图用我在这里看到的所有解决方案来改变它。

1 个答案:

答案 0 :(得分:0)

Zaph绝对是正确的,创建数据模型类绝对是MVC的方式。但是,如果此数组不包含任何基本信息,并且实际仅在这两个类中使用,那么适当的方法是:

1 - 将数组保存在VC1中(在此示例中名为originalArray

2 - 在VC2中创建一个NSMutableArray属性(在此示例中名为arrayToPass

3 - 在VC1和VC2之间的prepareForSegue中执行以下操作:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"myIdentifier"]) {
        MySecondViewController *secondVC = (MySecondViewController* ) segue.destinationViewController;
        secondVC.arrayToPass = [NSMutableArray arrayWithArray:self.originalArray]; // it is a good practice to initiate the property first

        // or
        // secondVC.arrayToPass = [self.originalArray mutableCopy];
    }
}