在uinavigationcontroller中更新子代后更新父表

时间:2010-06-14 15:57:20

标签: iphone objective-c uitableview uinavigationcontroller nsuserdefaults

所以你有UINavigationController,父表有一个单元格

---------------
|  paul     > |
---------------

然后点击它并获得一个包含您输入的文本字段的屏幕

---------------
| name: paul  |
---------------
| age: 23     |
---------------
| hair: brown |
---------------
| etc         |
---------------

---------------
| save button |
---------------

当您将名称更改为Steve,并按“保存”按钮(弹出视图)时,如何更新初始表?我正在使用NSUserdefaults来保存和加载。当我弹出初始视图时,名称不会更改。 ...但是,如果我重新启动应用程序,那么它就在那里。

无法解决在应用运行时如何更新第一个表格的问题。

1 个答案:

答案 0 :(得分:2)

您可以实现委托模式或发送NSNotification。 为此,我认为代码量大致相同,但由于它是一个viewController与另一个进行通信,因此你应该使用委托。

当你实例化(我假设你通过你描述它的方式呈现modalViewController)要推送的新UIViewController时,你将childViewController的委托设置为self(self是父viewController)。然后,在委托协议中的父实现方法。即 - (void)dataChanged:(NSString *)newData。此方法应更新表:

- (void) dataChanged:(NSString*) newData {

    [self.tableView reloadData];
}

当在推送的viewController中更改数据时,它会调用[self.delegate dataChanged:newData];

这是Apple用于其组件的模式,所以如果我刚写的内容没有意义,请尝试寻找“委托模式”,您很快就会回到正轨:)