我应该如何通过多个视图控制器传输数据?
在iOS开发视图控制器之间传递数据似乎过于复杂。 这是我意识到的事情:通过 - (void)prepareForSegue方法可以轻松地将数据传递(推送视图)或直接传递给视图。 使用presentationViewCotnroller和presendedViewController属性,数据可以轻松地在视图控制器之间来回切换。 以下是从第二个视图控制器返回到第一个视图控制器的数据示例。 这是我正在谈论的一个示例代码:
((FirstViewController *)self.presentingViewController).firstViewControllerProperty = self.secondViewControllerProperty;
然而,当我试图通过多个视图控制器传递数据时,我被卡住了。 每个人似乎都会使用授权,并根据MVC进行思考。 当我试图做到这一点时,我卡住了。 这是为什么:如果viewControllerA告诉模型保存一些数据,然后viewControllerD需要数据我最终有viewControllerD引用模型的一个实例。 (我这样做B / C我不知道如何从视图控制器访问模型)我假设当我创建模型的一个实例,这意味着我有一个新的模型没有我试图访问的数据。
然后我意识到,也许我应该把我的模型设置为一个单身人士。 我假设单身人士是当你设置一个被所有其他视图控制器引用的类时,他们不必创建模型类的实例。 我对单身人士的了解越多,我就越觉得自己偏离了轨道。 我尝试将所有这些东西放在一起,它变得过于复杂。
我在这里错过了什么吗? 我应该能够从各种视图控制器引用我的模型而不创建新的实例吗? 我对iOS编程相对来说比较陌生,我正在寻找有人指点我的方向。 我应该把自己的精力放在学习授权上吗? 或学习单身人士? 或学习目标行动? 有没有一个简单的教程/书籍建议来了解在视图控制器之间传输数据?
如果您想要最简单的方法,只需将一个属性添加到视图控制器,并且当您想要将数据传递给该视图控制器时,只需将该属性设置为您尝试传递的数据即可。 另一种方法是在您的视图控制器上创建一个方法来接受数据,然后从调用代码中简单地调用该视图控制器上的该方法和您要发送的数据。
只要您有想要传递数据的控制器的引用,就可以根据需要经常设置属性或调用方法。
不要太与代表混淆,只是为使用方法提供通信接口的一种方式。 我想说,了解iOS开发中的代表是非常重要的,因为它们的使用非常严重。
阅读Objective-C协议,它与其他语言的接口类似。 代表就是我们所说的实现协议的对象。
只传递从前一个视图控制器得知的数据。 每次您推送视图控制器时,您都不需要传递数据存储区,只需推送您正在处理的对象的ID或新视图需要完成其工作的任何变量即可。 您的视图控制器应该都能够独立于彼此访问数据存储,不要传递可轻松从数据存储中获取的数据。
链接地址: http://www.djcxy.com/p/20693.html上一篇: How should I be transferring data through multiple view controllers?
下一篇: What's the difference between the atomic and nonatomic attributes?