我有一个 RootViewController 和一个 DetailViewController,我试图将 NSMutableArray 从 rootView 传递到 detailView。我在 DetailViewController 中创建了一个 RootViewController 对象,并像下面这样访问它
RootViewController *root = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
detailViewArray = [root.rootViewArray copy];
注意:两个数组都在 .h 文件中声明;合成然后分配和初始化 array = [[NSMutableArray alloc] init];
问题:我不太清楚为什么它仍然不起作用。我已经在互联网上尝试了很多解决方案,但对我来说不太管用。根数组的属性是 nonatomic, retain 这有什么问题吗?我是否需要将其更改为某些内容或我遵循的方法不正确..如果有人可以提供帮助,请!
最佳答案
如果您在 DetailViewController 中分配/初始化 RootViewController,则您正在创建 RootViewController 的另一个实例。您没有获得 rootViewController 的相同实例(带有数据)。
就是说,即使将一个 viewController 的引用传递给另一个 viewController 然后查看它的数据也有点糟糕。它在 View 之间创建了紧密耦合。
相反,如果您需要获取数据,请考虑使用委托(delegate)在 View 之间进行通信。
What exactly does delegate do in xcode ios project?
教程:
另一种选择是创建共享模型(阅读 Model View Controller 模式)。在该模式中,通常通过获取模型的单例实例来创建模型和共享数据:
MyModel *model = [MyModel sharedInstance];
然后,每个 View 都可以设置模型的同一个(单例)实例并从中读取数据。
选择哪个?如果许多 View 共享相同的数据,则该模型会更好。委托(delegate)适合几个 View 通过回调与每个 View 进行通信。
关于iPhone 编程 - 在 View Controller 之间传递 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130191/