仍在尝试掌握iPhone编程并遇到问题。我在一个类中有一个NSMutableArray,它存储选择/单击的每个单元格的文本值。在另一个视图中,我想用前面形成的数组填充另一个表视图。但是,如何从View2访问此数组(View1中的属性)。
如果我转到另一个视图,数组是否仍会填充字符串?或者这是否需要sqLite数据库或类似的东西来维持持久性?
我尝试使用View1中的数组内容初始化另一个NSMutableArray,但这似乎不正确:
//View2.h
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *savedExercise = [Create workout];
}
非常感谢任何帮助。
答案 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(或任何您想要命名它。)