使用委托将 NSMutableArray 传回前一个视图控制器

Posted

技术标签:

【中文标题】使用委托将 NSMutableArray 传回前一个视图控制器【英文标题】:Passing NSMutableArray back to previous view controller using delegates 【发布时间】:2015-01-17 05:42:50 【问题描述】:

我有 3 个视图控制器

第一个视图控制器将来自文本字段的对象存储在 NSMutableArray 中,信息由用户输入。有 4 个字段作为一个对象存储在 NsMutableArray 中。

将数据存储在数组中后,将其存储在另一个数组array2中,该数组位于第二个视图控制器中,第二个视图控制器有一个UItableview和自定义tableview单元格。 array2 在 tableview 单元格中显示信息。

我有一个更新 btn,它转到第三个视图控制器,并在 4 个 uitextfields 中显示 tableview 单元格中的所有信息,就像在第一个视图控制器中一样。更改数据后,我将其再次存储在另一个数组 array3 中,我想将其传递回之前的第二个视图控制器以在表格视图单元格中显示更新的信息。

到目前为止一切正常,我的问题是,如何将 array3 传递回前一个视图控制器以显示更新的信息?我正在使用委托来传递数据,但我似乎无法将其传递回之前的视图控制器。应用程序崩溃,错误是“对象不能为零”

我查看了各种教程和问题,但找不到答案。请帮忙。

使用委托和数组

【问题讨论】:

您需要出示您的代码。至少第三个视图控制器中的方法,您将数据传递回第二个视图控制器,以及第二个控制器中委托方法的实现。另外,指出哪一行给出了错误。 在 AppDelegate 中声明一个对象,然后您可以将数据存储在该对象中。因此,整个应用程序都可以访问该对象,因为它位于 Application Delegate 中。 如果你看到“object”不能为nil。这很简单。请返回检查您的代码。 除非您向您展示代码,否则无法真正帮助您。 代码比这样读整段更直观。 【参考方案1】:

您必须在您的委托方法中传递数组,以便您可以在第二个视图控制器中获取此数组。例如,您调用了委托方法,例如: [self.delegate setData:(NSMutableArray *)array];

你可以在你定义 setData 方法的地方得到这个数组

(void)setData:(NSMutableArray *)array NSLog(@"数组值 %@",array)

【讨论】:

【参考方案2】:

我的建议是你可以在 Appdelgate 中维护你的 NSMutableArray 使用NSUserdefaults

-通过使用这些,您可以在项目中的任何地方维护您的数据

【讨论】:

以上是关于使用委托将 NSMutableArray 传回前一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

使用委托将数据传回上一个VC并更新自定义单元格

在另一个类的应用程序委托中使用 NSMutableArray

使用 Delegates 通过多个 viewController 传回数据

将 Int 属性从文本字段传回控制器

将数据传回 MVVM

反转Segue时如何将信息传回iOS?