0

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

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

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

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

    NSMutableArray *savedExercise = [Create workout];
}

任何帮助将非常感激。

4

3 回答 3

0

如果你从 view1 创建 view2,一个常见的模式是创建另一个 init 方法,所以当你创建 view 2 时,你会调用

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

其中 data 是您的数组。

在 View2 中,您将拥有

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

其中 dataProperty 是 View2 上的一个属性。

于 2012-04-09T20:01:47.990 回答
0

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

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

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

于 2012-04-09T20:05:24.107 回答
0

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

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

于 2012-04-09T20:08:37.517 回答