Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.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
SWIFTUI-iOS:注册用户的多视图和传输数据_Ios_Iphone_Xcode_Swiftui_Swift5 - Fatal编程技术网

SWIFTUI-iOS:注册用户的多视图和传输数据

SWIFTUI-iOS:注册用户的多视图和传输数据,ios,iphone,xcode,swiftui,swift5,Ios,Iphone,Xcode,Swiftui,Swift5,我正在尝试在swiftui中为注册用户表单创建多个视图。我想显示一些信息(电话号码、密码),当他按下按钮(下一步)时,会出现一个新页面,上面有出生日期(…),最后所有信息都会发送到firebase以创建帐户 但我是SWIFT(不是C#或python)的初学者,我没有找到任何教程或示例来实现这一点。我有一个登录页面和一个带有动画的注册页面,可以从一个页面转到另一个页面,还有使用firebase创建帐户的功能,但是我找不到如何在注册页面中创建多个视图以及如何在多个视图之间传递信息 我发现这是为了传递

我正在尝试在swiftui中为注册用户表单创建多个视图。我想显示一些信息(电话号码、密码),当他按下按钮(下一步)时,会出现一个新页面,上面有出生日期(…),最后所有信息都会发送到firebase以创建帐户

但我是SWIFT(不是C#或python)的初学者,我没有找到任何教程或示例来实现这一点。我有一个登录页面和一个带有动画的注册页面,可以从一个页面转到另一个页面,还有使用firebase创建帐户的功能,但是我找不到如何在注册页面中创建多个视图以及如何在多个视图之间传递信息

我发现这是为了传递信息:
但我想用最好的方式来做。谢谢你的帮助

您需要遵循联合收割机框架(反应式编程)

创建一个可观察的对象

class UserAuth: ObservableObject {
    @Published var userLoggedIn: Bool = false
}
在创建场景代理类的位置添加环境对象

func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options _: UIScene.ConnectionOptions) {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).

    // Create the SwiftUI view that provides the window contents.
    let userAuth = UserAuth()
    let contentView = AppNavigationView().environmentObject(userAuth)
    // Use a UIHostingController as window root view controller.
    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: contentView)
        self.window = window
        window.makeKeyAndVisible()
}
在登录类中更新与下面相同的环境对象

struct LoginView: View {

    @EnvironmentObject var userAuth: UserAuth

    func callWebservicePerformLogin() {
       //update the user auth object which will send updates t
       self.userAuth.userLoggedIn = true
    }
}
侦听器类

struct AppNavigationView: View {
    @EnvironmentObject var userAuth: UserAuth

    var body: some View {
        if !userAuth.userLoggedIn {
            return AnyView(LoginView())
        } else {
        return AnyView(PlayerList())
        }
    }
}

请看这个-这个社区与“意见”无关。没有“最佳方式”。总有不同的方法。如果您是SwiftUI初学者,您应该从教程开始…您的链接不涉及SwiftUI;)对于您的问题,一个快捷的解决方案是使用@Published和environmentvariable……我建议您在直接请求之前尝试一些代码并实现它。如果您有疑问或错误,欢迎您在堆栈上使用,但只有在您尝试实现查询时才可以使用。@Chris谢谢,但这是使用swiftUI的最佳方式,我认为有一些函数可以做到这一点,但如果没有,我有我的想法。我创建了一些.swift文件,其中包含我想要的表示形式(firts name and names,next date of birth…)。我创建了一个int变量,当我按next时取+1,当我按return时取-1,并显示视图。我想要的swift和所有文件都可以访问所有数据