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

SwiftUI中NavigationView内Sheet无法正常工作的问题求助

解决SwiftUI中非全屏Sheet跳转全屏视图的问题

问题核心

你遇到的两个方案的问题根源:

  • 方案一:NavigationView在Sheet外时,Sheet不属于NavigationView的层级结构,内部的NavigationLink无法触发导航栈跳转,因此无效。
  • 方案二:NavigationView放入Sheet内时,导航栈的目标视图会继承Sheet的尺寸限制,导致SignView高度和Sheet一致,无法全屏显示。

正确解决方案

直接在Sheet内部用fullScreenCover替代NavigationLink来触发全屏的SignView,既保留非全屏Sheet的展示,又能让目标视图全屏适配。

修改后的完整代码

import SwiftUI

struct LoginView: View {
    @State var isSheetPresented = false
    @State var isSignViewPresented = false
    
    var body: some View {
        VStack(alignment: .center) {
            Spacer()
            Button(action: {
                isSheetPresented = true
            }) {
                Text("Sign up")
                    .padding(.horizontal, 23)
                    .padding(20)
                    .font(.system(size: 25, weight: .heavy))
                    .background(Color.blue)
                    .foregroundColor(.white)
                    .cornerRadius(10)
            }
            .sheet(isPresented: $isSheetPresented) {
                VStack {
                    Button(action: {
                        isSignViewPresented = true
                    }) {
                        Text("MyCard")
                            .font(.title)
                            .foregroundColor(.black)
                    }
                }
                .presentationDetents([.height(300)])
                .fullScreenCover(isPresented: $isSignViewPresented) {
                    SignView()
                }
            }
        }
    }
}

struct SignView: View {
    var body: some View {
        ZStack {
            Color.green.edgesIgnoringSafeArea(.all)
            Text("Sign View")
                .font(.largeTitle)
                .foregroundColor(.white)
        }
    }
}

代码说明

  1. 移除外层NavigationView,无需它处理Sheet内的跳转逻辑。
  2. Sheet内的按钮通过触发isSignViewPresented状态唤起fullScreenCover,替代原有的NavigationLink。
  3. fullScreenCover会以全屏方式展示SignView,完全适配屏幕尺寸,解决框架适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:17