切换到视图控制器 B 后如何保持视图控制器 A 的状态?
Posted
技术标签:
【中文标题】切换到视图控制器 B 后如何保持视图控制器 A 的状态?【英文标题】:How to keep state of View Controller A after switching to View Controller B? 【发布时间】:2013-09-29 07:48:17 【问题描述】:我正在制作一个应用程序,在切换到视图控制器 B 后,我需要视图控制器 A 的地图处于相同状态。但是,我不知道如何切换视图以查看相同状态?这意味着当我从视图控制器 B 切换回视图控制器 A 时,我的印象是我需要创建视图控制器 A 的新实例,然后推送该视图控制器。但是,这意味着我在第一次加载时丢失了所有实例数据。如何保存我第一次进入该视图时的数据?
【问题讨论】:
【参考方案1】:您需要了解,当您从一个视图控制器移动到下一个视图时,新视图不会显示,直到您将控制权返回给 ios(或者您已退出该方法)。
例子
presentviewcontroller .....
做点什么
返回; -> 您的新视图控制器仅在此语句之后获得控制权
所以变量像 NSString *c = @"YES"; 会消失,但是
properties such as
@property (nonatomic,strong) *c;
will retain whatever value you have placed in it.
这是你的问题吗?
【讨论】:
如果您想知道在 dissmissviewcontroller 之后您在哪里,您将处于等待状态,等待来自最后一个控制器的最后一个视图的响应。 (等待按下按钮)。【参考方案2】:我的印象是我需要创建视图控制器 A 的新实例,然后推送该视图控制器。
绝对不是。假设您使用的是导航控制器,并且您已推送控制器 B,只需将其弹出(导航控制器上的popViewController:
)即可返回到 A 的原始实例。
创建 A 的新实例似乎是个坏主意,因为它会导致导航堆栈无限高。
如果你展示的是模态视图控制器,原理是一样的。 present...
将 B 放在 A 之上。dismiss...
将删除 B 并带您回到原来的 A。
【讨论】:
我要问的是如何“返回到 A 的原始实例”? 使用 popViewController。你在使用导航控制器吗?首先,您是如何从 A 移动到 B 的?您提到了推送,所以我假设您使用的是导航控制器。 我使用“presentViewController”来展示新的视图控制器,“dismissViewController”来关闭当前的。可以返回原始状态的某些代码的示例是什么? Dismiss 会将您返回到上一个视图控制器。我不明白你遇到的问题。请问您能否在问题中添加更多详细信息,包括您当前使用的代码? “但是,我不知道如何切换视图以查看相同的状态?” @Jake Byman 我想您应该在关闭视图之前使用委托从视图控制器 B 重置视图控制器 A 的状态控制器 B.以上是关于切换到视图控制器 B 后如何保持视图控制器 A 的状态?的主要内容,如果未能解决你的问题,请参考以下文章