【问题标题】:Pass NSMutableArray Data Between Views [duplicate]在视图之间传递 NSMutableArray 数据
【发布时间】:2014-06-21 03:22:56
【问题描述】:

我在将 NSMutableArray 数据从一个视图传递到另一个视图时遇到问题。

我的视图转换按以下方式进行

发送视图 -> 收件人视图

收件人视图 -> 发送视图

在收件人视图中,我正在抓取我想向其发送数据的人。一旦我使用数组抓取了这些人,我就会返回我的发送视图向这些人发送数据。

在我的发送视图中,我有以下 NSMutableArray

@property (nonatomic, strong) NSMutableArray *sendTo;

我在 viewDidLoad 中这样初始化它:

self.sendTo = [[NSMutableArray alloc] init];

在我的收件人视图中,我有以下 NSMutableArray

@property (nonatomic, strong) NSMutableArray *recipientsArray;

我在 viewDidLoad 中这样初始化它:

self.recipientsArray = [[NSMutableArray alloc] init];

我在这个控制器中还有一个后退按钮,它试图处理收件人数组中的数据传递。请注意,在视图切换之前,此数组中确实有数据。

- (IBAction)back {
   SendView *send = [self.storyboard instantiateViewControllerWithIdentifier:@"View"];
   send.sendTo = [NSMutableArray arrayWithArray:self.recipients];
[self dismissViewControllerAnimated:YES completion:nil];
}

知道为什么我的发送视图中的数组返回 nil 吗?

【问题讨论】:

  • 我怀疑你想在返回时创建一个新的 SendView。
  • 什么? @vikingosegundo
  • 我怀疑你想在返回时创建一个新的 SendView。
  • 我想我不会? @vikingosegundo
  • (提示:委托是可可编程中许多情况下的正确答案)

标签: ios objective-c cocoa-touch nsmutablearray


【解决方案1】:

这段代码创建了一个全新的 SendView...

实例
SendView *send = [self.storyboard instantiateViewControllerWithIdentifier:@"View"];

此代码在SendView 的全新 实例上设置sendTo 属性。

send.sendTo = [NSMutableArray arrayWithArray:self.recipients];

在back 方法结束时,SendView 的此实例超出范围并永远消失。

总之,您必须获得对SendView 现有实例的引用才能执行任何有意义的操作。

【讨论】:

  • 我如何获得该参考资料?
  • @CrimsonChris 得 10 分!
  • 听起来很混乱......
  • 此行为与所有其他面向对象的语言一致。在尝试制作应用程序之前,您应该学习一些 OOP 原则。这是一个为 iOS 量身定制的非常适合初学者的教程。 raywenderlich.com/45940/intro-object-oriented-design-part-1
  • 如果你喜欢它更加混乱,你可以实现一个回调块。
猜你喜欢
  • 2014-06-18
  • 1970-01-01
  • 2011-12-29
  • 2022-01-07
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多