Ios 是否在导航回后重新创建ViewController对象?
现在我创建了一个新项目来测试unwind segue 在故事板中,故事条目位于VC0上,VC0中的按钮转到VC1(模式),VC1中的按钮转到VC2(模式) VC2有一个自行关闭的按钮,其功能如下: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
@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。如果你使用推送序列,那么你必须使用导航控制器,但解卷序列不需要导航控制器。