Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从多个源段保留视图控制器的状态_Ios_Objective C_Swift - Fatal编程技术网

Ios 从多个源段保留视图控制器的状态

Ios 从多个源段保留视图控制器的状态,ios,objective-c,swift,Ios,Objective C,Swift,场景 我有一个Objective-C和Swift的混合项目,其中包含导航控制器和选项卡栏控制器。我有一个视图控制器(唯一一个用Swift编写的控制器),它在故事板上从导航视图控制器和选项卡栏控制器都有自己的分段。视图的持久性只需要在应用程序打开或在后台时有效 问题 我遇到的问题是,当从导航控制器或选项卡栏控制器访问时,保持Swift view控制器的状态不变 可能的解决方案 一种可能的解决方案是从导航堆栈中删除segue,并仅将其保留在选项卡栏控制器上吗?如果是这样,如果我以编程方式从导航堆栈中

场景

我有一个Objective-C和Swift的混合项目,其中包含导航控制器和选项卡栏控制器。我有一个视图控制器(唯一一个用Swift编写的控制器),它在故事板上从导航视图控制器和选项卡栏控制器都有自己的分段。视图的持久性只需要在应用程序打开或在后台时有效

问题

我遇到的问题是,当从导航控制器或选项卡栏控制器访问时,保持Swift view控制器的状态不变

可能的解决方案


一种可能的解决方案是从导航堆栈中删除segue,并仅将其保留在选项卡栏控制器上吗?如果是这样,如果我以编程方式从导航堆栈中分离以调用选项卡栏控制器segue,这会保持视图控制器的状态吗?然后我甚至可以将数据传递给该VC吗?

听起来您有一些视图控制器的多个实例。只要它们都共享数据模型的单个实例,这就不应该是问题。如果您将数据模型存储在视图控制器中,那么您需要重构代码,这正是Swift VC所发生的。VC被重新实例化并放在堆栈上,导致大量内存使用。我通过使用“展开”解决了我的问题