使用UINavigationController和默认后退按钮时如何将数据传回父视图?

Gre*_*reg 5 iphone delegates uiviewcontroller uinavigationcontroller ios

背景 - 所以在高层次的方法方面,我似乎是:

  1. 当继续UINavigationController的水平的链保存/坚持设置 - 所以当最初开始更改设置,或创建的设置,就需要值的默认设置 - 即使在任何时间点,如果该应用程序死亡的设置会有效
  2. 随时保存更改,一旦您从UINavigationController屏幕树中退出(设置了所有设置),就可以保存一个点

这个问题集中在我试图实施的选项2上.

计划 - 在设置类型UINavigationController中,当子视图被推入堆栈时,我将把父视图中设置的一部分的现有(或默认)细节传递给子视图.问题是当这个数据被更新时,并且假设我想坚持使用默认的后退按钮,似乎没有办法拦截默认的后退按钮,所以当我准备将孩子从堆栈中弹出时就在此之前,我将调用一个委托,它将最新的设置传递回父母.

问题 - 当使用UINavigationController并希望坚持使用默认的Back Button(左箭头上的东西)时,如何将更新的数据从子控制器传递回父控制器.

也就是说,大概我是不如何将数据传回我想(我将使用委托),而是如何在时间中的孩子控制器中的正确位置,从而挂接到一个回调方法然后使用委托方法将数据传回.

dre*_*wag 2

您可能需要考虑使用单独的对象作为 SettingsController。您可以将其设置为视图的委托,或者直接调用其上的函数(最有可能使用单例设计模式)。设置控制器可以保存缓存的数据,当向导完成时(最后一页被释放或类似的事情),您可以让设置控制器永久保存数据。

另一种选择是添加一个保存或完成按钮来保存,否则后退按钮充当取消按钮。从用户界面的角度来看,如果没有“保存”按钮,用户可能会认为设置已立即更改。