将数据从模态导航控制器传递到父控制器?

时间:2009-05-21 21:12:45

标签: iphone

我开始从事iPhone开发,我正在尝试使用联系人式控制器将项目添加到表格中。我已经设计了两个控制器,但我似乎无法弄清楚如何在它们之间传递数据。如何从模态控制器获取数据到其父级?

只是尝试在parentViewController上调用方法将无法工作(并导致编译器警告和崩溃)。我已经考虑过将数据从控制器本身移出(无论如何都会发生这种情况,我现在只是想让事情变得尽可能简单),但即便如此,我还是要以某种方式告诉父视图刷新它的数据。再说一遍,我该怎么做?

4 个答案:

答案 0 :(得分:2)

  

我考虑过将数据移出控制器本身(无论如何都会发生这种情况

我认为现在可能是时候考虑这个问题并创建一个单独的“ContactList”模型对象来存储您的数据。

您的模态视图控制器只是将新的“联系人”添加到“ContactList”中。

您的TableViewController应该观察相同的“ContactList”。当在“ContactList”中添加/删除项目时,TableViewController将简单地从其tableView中添加和删除行。

通过这种方式,您将使每个ViewController保持独立,您的代码将更加灵活,添加/删除单行将比重新加载整个tableView更有效。

答案 1 :(得分:1)

您要么保留一个指向您创建的子视图的链接,并要求其提供返回时已更改的数据,要么将自己作为子视图的委托给自己,并让它直接给您回电(如果您有一个有效参考)。

答案 2 :(得分:1)

我遇到了同样的问题并找到了示例代码:http://developer.apple.com/iphone/library/samplecode/LocateMe/Introduction/Intro.html

帮我一点,很容易从代码中找出答案。

答案 3 :(得分:0)

简而言之,请使用委托。

我建议你看一下第11讲:文本输入,模态呈现内容(5月6日) - 斯坦福大学提供的iPhone应用程序编程课程。在iTunes U上搜索它。

如果您想了解如何实施委托,请下载此示例应用:http://www.stanford.edu/class/cs193p/downloads/11-Pickers.zip