用于多个视图的单视图控制器

Rao*_*oul 6 viewcontroller ios swift

我正在尝试制作一个具有多个视图但只有一个视图控制器的注册表单。进入下一个视图后,我将输入写入到一个结构中,该结构稍后将发送到服务器。我面临的问题是,进入新视图时,VC将重新初始化,因此用户结构也将重新初始化。有没有办法解决多个ViewControllers的问题?

sil*_*ley 5

如果使用一个视图控制器的唯一原因是可以在试图呈现的不同屏幕上持久保存数据,则可能应该考虑将数据存储在视图控制器类之外。例如,通过将另一个类与共享实例一起使用:

class DataContainer {

    static let shared = DataContainer()

    var someString: String?

}
Run Code Online (Sandbox Code Playgroud)

现在,您可以按以下方式从任何视图控制器访问相同的数据(在移至另一个视图控制器时不会丢失数据):

if let someString = DataContainer.shared.someString {
    print(someString)
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 0

听起来您正在使用导航控制器在用户从一个视图切换到另一个视图时推送同一视图控制器的新副本。

我建议做的是拥有单个视图控制器(具有内容视图)和多个子类 UIView。

当用户单击“下一步”进入下一个视图时,以动画方式将旧视图移开并将新视图放置到位。

查看本教程的“示例 II” 。不使用图像视图,只需使用您自己的自定义(子类化)UIView。

这是一个带有更多示例代码的相关问题。