我正在尝试使用多个视图创建一个注册表单,但只有一个视图控制器。继续进入下一个视图后,我将输入结构写入稍后将发送到服务器的结构。我面临的问题是,在进入新视图时VC会重新初始化,因此用户结构也会重新初始化。 有没有办法绕过多个ViewControllers?
答案 0 :(得分:3)
如果使用一个视图控制器的唯一原因是您可以将数据保存在您尝试呈现的不同屏幕上,则应考虑将数据存储在视图控制器类之外。例如,通过使用另一个具有共享实例的类:
class DataContainer {
static let sharedInstance = DataContainer()
var someString: String?
}
您现在可以从任何视图控制器访问相同的数据,如下所示(移动到另一个视图控制器时不会丢失数据):
if let someString = DataContainer.sharedInstance.someString {
print(someString)
}
答案 1 :(得分:1)
听起来您正在使用导航控制器来推送用户从视图到视图的同一个View Controller的新副本。
我建议您使用单视图控制器(具有内容视图)和多个子类UIView。
当用户点击“下一步”转到下一个视图时,动画将旧视图移开并将新视图移动到位。
结帐this tutorial的“示例II”。而不是使用图像视图,只需使用您自己的自定义(子类)UIViews。
Here is a related question包含更多示例代码。
答案 2 :(得分:0)
您需要的是让父视图控制器保持属于您的注册路径的childViewController。这是一个简单的教程,介绍如何通过Vea Software实现此功能(在这种情况下添加用于导航的滑动手势识别器)。
像这样你所有的childViewController都可以拥有自己的逻辑自定义类,你不必在它们之间运行一个segue ......只需相互滚动。