如何从一个视图控制器传递数组到另一个视图控制器?

4

我正在开发一个应用程序。在其中,我需要从一个视图控制器传递一个数组到另一个视图控制器。

我该怎么做?


看一下这个链接,它会对你有所帮助。https://dev59.com/I1nUa4cB1Zd3GeqPYDG8 - Rakesh Bhatt
这是关于字符串的问题,你可以将其用于数组。 - iAmitWagh
4个回答

3
您可以在第二个视图控制器的.h文件中定义一个数组属性来实现它,例如:
@interface SecondViewController : UIViewController 
@property(nonatomic, strong)NSArray *array;
@end

现在在FirstViewconrtoller中只需传递它。
SecondViewController *controller = [[SecondViewController alloc]....]
controller.array = yourArray.//the array you want to pass

在第一个视图控制器中,我将数据存储到数组中,例如array=[[results valueForKey:@"names"]retain]。所以我按照你的方式使用了这个数组。但是在第二个视图控制器中,我遇到了错误,提示“Program received signal: “EXC_BAD_ACCESS””。 - Naresh Venkat
1
尝试使用@property(nonatomic, retain)NSArray *array;代替assign。 - makboney

1
我不会直接返回数组的引用,使用return _theArray;。这通常是糟糕的编码设计。解决你的问题的更好方法是:

在你的第一个控制器的.h文件中:

@interface FirstViewController : UIViewController
{
    NSArray *_theArray;
}

- (NSArray *)theArray;

在您的第一个控制器的.m文件中:
- (NSArray *)theArray
{
    return [NSArray arrayWithArray:_theArray];
}

并且在你的第二个控制器代码中任何你想要的地方:

NSArray *fooArray = [firstControllerReference theArray];

请注意,在此示例中,存储在fooArray中的对象引用与存储在theArray中的对象引用相同。因此,如果您修改fooArray中的对象,则theArray中的对象也将被修改。

0

在.h文件中声明它们,并为它们分配nonatomic和retain属性,然后synthesize它们。现在创建类的对象并访问该数组:)非常简单 :)


0

在 Swift 中,你

准备工作中的第一个视图控制器

var yourArray = [String]()
yourArray.append("String Value")
   let testEventAddGroupsViewController = segue.destination as! 
TestEventAddGroupsViewController
        testEventAddGroupsViewController.testEvent = yourArray

在第二个视图控制器中作为全局变量。
var testEvent = [String]()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接