Iphone NSMutableArray&;多视图
我正在尝试编写一个应用程序,该应用程序具有需要在不同视图中访问和修改的Iphone NSMutableArray&;多视图,iphone,objective-c,nsmutablearray,Iphone,Objective C,Nsmutablearray,我正在尝试编写一个应用程序,该应用程序具有需要在不同视图中访问和修改的NSMutableArray。 MainViewController显示一个表格,该表格从NSMutableArray获取信息。 SecondaryViewController用于将对象添加到数组中。 在不将其声明为全局变量的情况下,如何执行此操作 编辑: 这就是我到目前为止所做的: (MainView.m) (SecondViewController.m) 您应该检查依赖项注入模式- 初始化SecondaryViewCont
NSMutableArray
。MainViewController
显示一个表格,该表格从NSMutableArray
获取信息。
SecondaryViewController
用于将对象添加到数组中。在不将其声明为全局变量的情况下,如何执行此操作
编辑:
这就是我到目前为止所做的:
(MainView.m) (SecondViewController.m)
您应该检查依赖项注入模式-
初始化SecondaryViewController时,可以传入NSMutableArray的引用(指针),并将其保存在本地实例变量中。然后,当SecondaryViewController需要访问数组时,它可以使用其引用。将数组作为参数传递到SecondaryViewController的构造函数中,从而允许SecondaryViewController向其添加对象,将显示为MainViewController的对象将再次可见,您将重新加载表数据。如何显示SecondaryViewController?如果愿意,可以在SecondaryViewController标头中定义属性,如下所示:
{
NSMutableArray *theArray;
}
@property (nonatomic, retain) NSMutableArray *theArray;
然后你必须在@implementation的下方@synthesis它
@synthesise theArray
在MainViewController中,在创建第二个ArrayController之后,您可以执行以下操作
theSecondaryViewController.theArray =theArrayWhichYouHaveCreated;
现在两个对象都有指向同一对象的指针。读一个,写另一个!我还没有测试过这段代码,但它应该可以工作。如果没有,请评论 让一个控制器负责阵列,并通过该控制器访问阵列。例如,为MainViewController提供对SecondaryViewController的引用,并将SecondaryViewController设置为表的数据源。您必须声明一个
NSMutableArray
并在TestAppDelegate.h
例如: 在main类中,必须为arrayList设置
@synthesis
如果要从SecondViewController
在arrayList
中添加对象,只需编写以下代码
TestAppDelegate *appDelegate = (TestAppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.arrayList addObject:object];
您可以从任何类(应用程序中使用的类)访问此数组
我想它会帮助你
谢谢。共享可变状态不是一个好主意,在Cocoa中根本不习惯。最好让SecondaryViewController获取对MainViewController的引用,并要求它修改数组。共享可变状态不是一个好主意,在Cocoa中根本不惯用。最好让SecondaryViewController获取对MainViewController的引用,并要求它修改数组。这是我在尝试您所说的内容时在头文件中遇到的错误。错误:Objective-C类“NSMutableArray”的静态分配实例我如何引用它,这是我缺少的语法:(感谢你们的帮助:)@Antonio:这只是意味着你在写
NSArray某物
,而不是NSArray*某物
@Chuck,或者更好,让这种代码完全不在视图控制器中,而是创建一个类来管理所有这些(可能是作为一个单例?)以适应mvc。这取决于如何使用它…我在主标题中引用了SecondaryViewController。这就是我想要做的。在主控制器中保留操纵数组的所有方法,然后从secondaryViewController调用这些方法。我只是不知道从secondaryViewController执行此操作的语法。有人能给我指一指我能学的地方吗?
theSecondaryViewController.theArray =theArrayWhichYouHaveCreated;
@interface TestAppDelegate : NSObject {
NSMutableArray *arrayList;
}
@property (nonatomic, retain) NSMutableArray *arrayList;
@end
TestAppDelegate *appDelegate = (TestAppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.arrayList addObject:object];
TestAppDelegate *appDelegate = (TestAppDelegate*)[[UIApplication sharedApplication] delegate];
1. NSMutableArray *array = [appDelegate.arrayList retain];
or
2. NSMutableDictionary *dictionary = [appDelegate.arrayList objectAtIndex:index];