在经过几个月的不间断学习后,真的很享受在我的第一个应用程序上工作。有机会做一个慈善机构iOS App。这是非常基本的应用程序,但我现在卡住了,希望得到一些帮助。
我有以下视图控制器和一个类:
PeopleViewController (datasource and delegate, also holds "people" NSMuteable array)
PersonViewController
Person
我有一个PersonViewController
,此控制器连接到一个视图,该视图显示带有几个文本字段和图像上传选项的表单。它在最底部有一个提交按钮,该按钮连接到一个收集字段中所有数据的操作。那就是我打算做的事。
我有一个PeopleViewController
datasource
和delegate
。它负责提供要在表视图上显示的用户列表。这些用户列表来自数组“people”。目前,我在人员视图控制器的viewDidLoad
方法中填充数组。最终datasource
将是客户端数据库,但现在这个数组充当该数据库。
我想要做的是如何将我存储在Person类实例中的PersonViewController
中的数据放入PeopleViewController数组中。当点击PersonViewController
表单的提交按钮时,会创建Person
的实例,然后来自字段的数据存储在该新对象中。问题是在viewDidLoad期间填充了人员数组。
问题:
如何将Person
中新创建和填充的PersonViewController
对象导入PeopleViewController
类的人员数组?
实现这一目标的最佳方式是什么?
我正确地说,在运行viewDidLoad之后,持有现有“人员”的人员阵列仍然存在于堆中,我可以将一些新创建的对象添加到该数组中吗?
有点困惑。我想过几个方法,但有些看起来很单调乏味。我想看看有经验的开发人员如何做到这一点并理解原因。
此致
答案 0 :(得分:1)
首先,您的数组必须是NSMutableArray,否则您无法在数组中添加或删除对象。
一旦确定您的阵列是可变的,您就可以调用
[personArray addObject:newPerson];
即使您在viewDidLoad
中填充数组,也可以执行此操作。请注意,向项目添加项目只需一步,您仍需要更新用户界面。
编辑:
要将新创建的Person对象从一个控制器传递到另一个控制器,您有几个选项。如果PersonViewController有一个指向PeopleViewcontroller的指针,则可以将该数组设为公共属性。
[myPeopleViewController.personArray addObject...]
回答这个问题真的很难,因为我需要看看你的ViewControllers是如何实例化的,以及它们之间的关系是什么。
答案 1 :(得分:1)
也许Singleton对你很有意思。 特别是如果您要增强您的应用程序以与其他ViewControllers共享数据。
这是一个了解DesignPattern和Singleton的好网站 http://www.raywenderlich.com/46988/ios-design-patterns
希望这可以帮助你一点点玩得开心。
格尔茨
答案 2 :(得分:0)
我原来做的是在表单提交按钮上附加了一个操作。然后我声明了一个实例变量并在操作中初始化它。然后我觉得我可以在prepareforsegue方法中获取实例,并访问我在动作中设置的属性,但在尝试从对象实例中读取属性时,我一直保持为null。
我删除了操作并删除了它的连接,然后初始化了一个新对象,将文本字段值存储在prepareforsegue方法中,这对我来说很好。