背景 - 所以就高级方法而言,我似乎是:
这个问题主要关注我试图实施的选项2。
计划 - 在设置类型UINavigationController中,当子视图被推入堆栈时,我打算将设置的一部分的现有(或默认)细节从父视图传递到子视图。问题是当这个数据被更新时,并且假设我想坚持使用默认的后退按钮,似乎没有办法拦截默认的后退按钮,所以当我准备将孩子从堆栈中弹出时就在此之前,我将调用一个委托,它将最新的设置传递回父母。
问题 - 当使用UINavigationController并希望坚持使用默认的Back Button(左箭头上的东西)时,如何将更新的数据从子控制器传递回父控制器。 < / p>
也许,我可能不是如何传回数据我想(我将使用委托),而是如何在子控制器中的正确时间点挂钩回调方法然后使用委托方法将数据传回。
答案 0 :(得分:3)
使用Delegate可能是您的解决方案。
可以找到教程:
http://timneill.net/2010/11/modal-view-controller-example-part-2/
这对我很有帮助。
编辑:
UINavigationController "back button" custom text?
然后添加方法:
[self.navigationController popViewControllerAnimated:YES];
回到上一个视图。然后,您可以将自己的代码添加到该后退按钮。
每次按下后退按钮都会调用此方法。但要注意它是否转向另一种观点而不是回头。
答案 1 :(得分:2)
您可能需要考虑使用单独的对象作为SettingsController。您可以将其设置为视图的委托或直接调用其上的函数(最有可能使用单例设计模式)。设置控制器可以保存缓存的数据,当向导完成(最后一页被解除分配或类似的东西)时,您可以让设置控制器永久保存数据。
另一个选项是添加一个导致保存的保存或完成按钮,否则后退按钮用作取消按钮。从UI的角度来看,如果您没有“保存”按钮,用户可能会认为设置会立即更改。