2012-03-11 124 views
0

在这一点上,我有一个相当复杂的应用程序,感觉好像我处理数据的方式没有达到要求。如何在视图控制器之间传递数据

所以我开始采取一些措施让我的应用程序更友好。 其中的第一个,我已经从我的所有ViewController中的内联分析器方法变为创建专用分析器类。

它不难调用我只是设置类,然后调用我所做的传递数据的初始化方法我的请求..在我的对象类中的一切工作甜蜜我得到一大堆返回数据我正在解析的服务器..但是这是我得到升技丢失的地方。

如何将数据返回给调用它的ViewController?我对协议和委托做了一些工作......但我不知道这将如何适应这一点。

下面是我尝试实现的一个图形化示例。

Passing data between views

所以如上视图控制器调用它连接到DB中的对象类中的初始化方法下载数据,然后分析该数据。我遇到的问题是,我如何才能将数据提取到ViewController2 ..

什么是最合适和未来的证明方式?

回答

3

自定义 - init方法确实有奇效。例如,我需要实例化并从前一个屏幕中推送一个预加载数组的选择器,因此我在第二个视图中定义了-(id)initWithArray:(NSArray*)array,然后只是调用secondView = [[SecondView alloc]initWithArray:_population];,然后将其推送。请记住,在您释放并销毁之前获取您传递的任何对象的所有权!

+0

通过获取所有权,你有什么感受?..感谢您的回应,现在就试用它。 – 2012-03-11 21:40:13

+1

就像,当你传递数组时,你在技术上并不拥有它,所以在第二个视图中,你必须设置一个新的NSArray对象,该对象等于方法中传递的对象。 – CodaFi 2012-03-11 21:41:15

+0

好完美..虽然是这样,但想确保。好吧谢谢你的答案将标记一次的时间到了:) – 2012-03-11 21:50:34

0

如果你想从你的对象向所有视图控制器广播数据,这样做的好方法是通过通知(NSNotificationCenter)。您也可以在分析器对象中编写一个带有完成块的方法。

0

尝试使用NSNotificationCenter发送本地通知。将您的ViewController2注册为侦听器,然后在收到通知后,调用您的数据模型(singleton !?)作为数据。

+0

我不喜欢NSNotificationCenter相当于代表团......它提醒不得不接受不可靠的发送事件在刮伤语言...和那么如果你忘记了事件的关键是什么,你必须去挖掘它... – CodaFi 2012-03-11 21:37:27

+0

但这就是为什么NSNotificationCenter在那里的确切目的。除非你想做一个单身视图控制器(坏习惯),否则你会想要使用它。 – 2012-03-11 21:39:03

相关问题