在视图控制器之间传播数据

时间:2009-04-27 18:21:52

标签: iphone

我有一个表视图控制器。该表的某些行打开新的控制器,让用户输入更多数据或使用选择器等。它就像内置的日历应用程序。当用户在第二个屏幕上点击“保存”时,我希望该屏幕中的值传播回表视图控制器,但我不知道该怎么做。由于我使用pushNavigationController进入第二个屏幕,因此没有机会将指针提供回原始对象。 (这似乎是非常糟糕的设计,即使它是可能的,因为第二个控制器必须知道其父母的东西。)

另外,从测试开始,似乎pushNavigationController没有“暂停”原始控制器,所以一旦弹出第二个屏幕,你就不会在下一行代码上恢复。

似乎我在这里缺少一些非常基本的东西。

1 个答案:

答案 0 :(得分:1)

Apple的许多框架都支持MVC(模型视图控制器)设计模式。控制器(在本例中为UITableViewController)协调获取数据以便切换到视图(在本例中为UITableView)。要充分利用此模式,您的数据应来自Model对象。这是您设计用于表示数据的对象 - 提供抽象,以便您的UI实现和数据松散耦合。当控制器推动另一个控制器进一步检查或编辑数据时,Model对象将传递给该控制器,以便新控制器可以访问模型中包含的数据。用户更改UI中的数据,然后在按下“保存”时修改模型对象。

当用户按下“保存”按钮时,有许多方法可以将更改传播回UITableViewController。您可以使用KVO(键值观察),在模型对象的属性发生更改时通知表或其一个单元格。另一种方法是在两个控制器之间使用NSNotificationCenter通知来传达更改。