首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController截取- popViewControllerAnimated:

UINavigationController截取- popViewControllerAnimated:
EN

Stack Overflow用户
提问于 2009-05-28 11:24:59
回答 2查看 7.6K关注 0票数 4

所以问题是,当有人触摸UINavigationControler上的back按钮时,我想运行一些代码来更新数据源。

问题是我似乎找不到合适的代表来做这件事。只有这些是可用的nav控制器委托,我想要'didfinishshowing‘类型的方法。

代码语言:javascript
复制
– navigationController:willShowViewController:animated:  optional method  
– navigationController:didShowViewController:animated:  optional method  

我觉得下一个最好的地方是导航吧,但当我尝试的时候。

由于

异常“NSInternalInconsistencyException”终止应用程序,原因是:“无法在控制器管理的UINavigationBar上手动设置委托

这是有追溯意义的,因为你不想让一些黑客乱搞导航控制器的内部,阻止它工作。

这一定是一个常见的问题,我错过了一些简单的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-28 13:15:52

将刷新代码添加到即将显示的视图控制器上的viewWillAppear:(BOOL)动画方法中。在您的示例中,这是已经在导航堆栈上的视图控制器。

票数 5
EN

Stack Overflow用户

发布于 2009-05-28 18:24:04

这样我们就清楚了:A视图是起点。用户点击一些东西,你就可以看到B了。用户点击后退按钮,你将从B返回到A,并且你想要做一些事情作为' back‘动作的结果。

有三种方法可以做到这一点(而且您也不必靠近navigationController --这些方法适用于底层viewControllers本身):

  • 建议重写视图控制器A上的viewWillAppear,所以当您返回到它时,它会刷新自己。问题是,当A第一次被调用时,viewWillAppear也被调用。因此,当从B返回时,您必须设置某种标志来区分第一个viewWillAppear和随后的任何标记。
  • 覆盖视图控制器B上的viewWillDisappear并在那里进行刷新。只有在B要离开的时候才会打电话来。如果B上有一个层次更深的东西,或者在上面弹出一个模态对话框,那么going.
  • Decouple将再次被调用,所以您必须区分即将到来的视图和viewWillDisappear的不同视图,并使用委托模式。视图控制器A将自身设置为B的委托,当B更新某些内容时,它调用委托方法,因此通知A更改,并可以随时更新它所需的任何内容。您可以在用户在B内进行更改或重写viewWillDisappear时调用委托方法,并在退出时只执行一次.
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/920379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档