Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 是否在导航回后重新创建ViewController对象?_Ios_Segue - Fatal编程技术网

Ios 是否在导航回后重新创建ViewController对象?

Ios 是否在导航回后重新创建ViewController对象?,ios,segue,Ios,Segue,现在我创建了一个新项目来测试unwind segue 在故事板中,故事条目位于VC0上,VC0中的按钮转到VC1(模式),VC1中的按钮转到VC2(模式) VC2有一个自行关闭的按钮,其功能如下: @IBAction func btnDismiss(_ sender: Any) { dismiss(animated: true, completion: nil) } 在VC1中,我添加了如下展开功能: @IBAction func unwindSecondView(segue: UIS

现在我创建了一个新项目来测试unwind segue

在故事板中,故事条目位于VC0上,VC0中的按钮转到VC1(模式),VC1中的按钮转到VC2(模式)

VC2有一个自行关闭的按钮,其功能如下:

@IBAction func btnDismiss(_ sender: Any) {
    dismiss(animated: true, completion: nil)
}
在VC1中,我添加了如下展开功能:

@IBAction func unwindSecondView(segue: UIStoryboardSegue){
    print("unwinded")
}
然后在故事板中,我将VC2的退出图标链接到unwindSecondview作为操作

它工作得很好,但是在我单击VC2中的“Disclose”按钮后,VC1短暂出现并跳回VC0

???有什么问题导致跳回VC0吗

--------------初始问题-----------------

我是iOS新手,对如何创建和激活VCs有点困惑

假设我在单视图应用程序中创建了2个ViewController。主控制器(VC_M)和设置控制器(VC_S)。我在故事板中添加了片段,VC_M中的一个设置按钮进入VC_S,VCS收集信息,写入标准默认值,然后ok按钮返回VC_M并刷新其视图

当我试图在VC_M中保存一些信息时,我发现在我单击VC_S中的“确定”按钮并返回到VC_M后,VC_M被重新创建,viewDidLoad()被调用。在调试器中,它显示VC_M对象(self)现在在内存中有一个不同的地址,因此它似乎是该类的另一个实例

这是正常的行为吗?最好保存旧的VC_M对象,这样一些数据就不需要重新加载。起初我以为我可以在init()中放入一些数据加载内容,但当VC_M重新创建时,init()也被调用了。一些以前的帖子建议不应该再次调用ViewDidLoad(),而是应该调用ViewDidAspect(),但我不确定现在是否也是这样


在我的例子中,使用标准默认值来重新加载所有内容更好吗,还是应该使用其他类型的segue?(我使用了推送序列)。

使用推送序列不会倒退,而是创建一个新的视图控制器并将其推送。Dan,我看到了大多数使用UINavigationController的例子。这是一项要求吗?我没有使用它,因为我的应用程序只有两个VCs。如果你使用推送序列,那么你必须使用导航控制器,但解卷序列不需要导航控制器。