首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIViewControllerContainer中有选择地推送viewWillAppear

在UIViewControllerContainer中有选择地推送viewWillAppear
EN

Stack Overflow用户
提问于 2014-02-06 12:08:15
回答 1查看 96关注 0票数 0

我们有一个应用程序,在那里模型对象可以以渐进的方式通过各种状态-例如,可以考虑Order的销售过程。Order的每种状态都由不同的视图控制器处理。

每个视图控制器识别它可以处理的状态,并且当达到它不能处理的状态时,推动后续的视图控制器处理下一个状态。各种事件都会导致VC更新其视图;此时将调用setupViewByOrderState方法。在viewDidAppear中调用相同的方法。

例如,假设一个Order可以通过状态1-10。ViewController A处理状态1-2,B处理3-5,C处理6-10。

如果A收到状态为1或2的订单,它会自行配置。如果它收到一个状态为3或更大的订单,它会推入一个B,并传递该订单。等。

这种技术的一个优点是第一个VC是一个“入口点”--给它一个给定的Order,并且它将推入所有必要的VC,直到到达一个能够在其当前状态下处理Order的VC,而无需逻辑显式地编码状态->VC对应关系需要存在于每个VC之外。

然而,如果希望通过视图堆栈向后弹出或取消模态,就会出现一个问题。一旦C弹出,就会调用B的viewDidAppear,这会立即将其放回on (以处理该状态下的订单) --这会将C放回on。

处理这个问题的合适模式是什么?

检查isBeingPresented不起作用。这些视图控制器也在自定义的UIViewControllerContainer中。该标志是只读的,但知道如何设置它会更好。

EN

回答 1

Stack Overflow用户

发布于 2014-02-07 02:20:27

只要不使用ViewDidAppear就行了。当您创建“下一个”视图控制器时,请创建它,然后调用特定于视图控制器的初始化方法来处理您在ViewDidAppear中处理的内容。

您希望将视图外观与订单状态解耦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21593801

复制
相关文章

相似问题

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