从另一个类调用数组

时间:2012-04-09 19:57:42

标签: iphone objective-c cocoa-touch

仍在尝试掌握iPhone编程并遇到问题。我在一个类中有一个NSMutableArray,它存储选择/单击的每个单元格的文本值。在另一个视图中,我想用前面形成的数组填充另一个表视图。但是,如何从View2访问此数组(View1中的属性)。

如果我转到另一个视图,数组是否仍会填充字符串?或者这是否需要sqLite数据库或类似的东西来维持持久性?

我尝试使用View1中的数组内容初始化另一个NSMutableArray,但这似乎不正确:

//View2.h
- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray *savedExercise = [Create workout];
}

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

如果从view1创建view2,常见的模式是创建另一个init方法,因此当您创建视图2时,您将调用

view2 = [[View2 alloc] initWithData:data];

其中数据是您的数组。

在View2中,你会有

-(id)initWithData:(NSArray*)_data{
    self = [super init];
    if(self){
        dataProperty = _data;
    }
    return self;
}

其中dataProperty是View2上的属性。

答案 1 :(得分:0)

您应该在View1中为实例变量“workout”创建getter(如果需要也设置setter)方法。为此,您可以使用Objective-C的@property功能。

然后访问View2中的View1实例以获取指向workout

的指针

更好的方法是创建单个“数据管理器”并通过sharedInstance方法访问它(正如我们在聊天中讨论的那样)。然后,您的数据将由该实例完全管理,并且可以通过与该sharedInstance“交谈”随时访问应用程序的任何部分。

答案 2 :(得分:0)

如果您的应用是特定于iOS 5的,并且您从View1转到View2,则可以使用segues和prepareForSegue来传递数据。

您可以使用performSegueWithIdentifier:sender:调用segue,然后在prepareForSegue方法中执行以下操作:[segue.destinationViewController setArray:###pass array here###]您只需要View2Controller标头中的属性,该属性具有名为setArray的setter(或任何您想要命名它。)