You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中点击LoginView按钮无法加载HomeFeedView如何解决

问题原因

你在loginAction方法中仅实例化了HomeFeedView对象,没有将该视图关联到当前导航容器的跳转逻辑,SwiftUI无法感知到需要切换视图,因此界面无响应。

修复方案(适配iOS 16+)

通过@State变量控制导航跳转状态,配合navigationDestination修饰符实现跳转:

修改后的LoginView代码

//
//  LoginView.swift
import SwiftUI

private let screenSize = UIScreen.main.bounds

struct LoginView: View {
    @State private var username: String = ""
    @State private var password: String = ""
    // 新增导航跳转控制状态
    @State private var isLoginSuccess = false

    var body: some View {
        NavigationStack{ // iOS16以下可换回NavigationView
            ZStack {
                Color("light_blue").ignoresSafeArea()
                Image("logo_splash")
                VStack(spacing: 12) {
                    TextField("Email/Username", text: $username)
                        .textFieldStyle(.roundedBorder)
                    SecureField("Password", text: $password)
                        .textFieldStyle(.roundedBorder)

                    Button(action: {
                        loginAction(username: username, password: password)
                    }, label: {
                        OrangeButtonView(buttonTitle: "Login")
                    })
                }
                .padding(.horizontal, 24)
                // 绑定跳转目标
                .navigationDestination(isPresented: $isLoginSuccess) {
                    HomeFeedView()
                }
            }
        }
    }

    func loginAction(username: String, password: String) {
        // 这里可补充实际的登录校验逻辑,校验通过后修改跳转状态即可触发跳转
        isLoginSuccess = true
    }
}

struct LoginView_Previews: PreviewProvider {
    static var previews: some View {
        LoginView()
    }
}

兼容iOS 15及更低版本方案

如果需要兼容旧版本系统,保留NavigationView的同时,新增隐藏的NavigationLink实现跳转,把以下代码放到ZStack内部和VStack同级即可:

NavigationLink(isActive: $isLoginSuccess, destination: {
    HomeFeedView()
}, label: {
    EmptyView()
})

拓展说明

跳转状态isLoginSuccess也可以放到全局的ViewModel或者App状态管理类中,可同时实现登录状态全局控制、退出登录后自动返回登录页的需求。

内容的提问来源于stack exchange,提问作者Seb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:27:03