【问题标题】:How to push on new screen after dismiss model sheet in SwiftUI?在 SwiftUI 中关闭模式表后如何推送新屏幕?
【发布时间】:2020-02-28 10:55:59
【问题描述】:

我必须像这样实现要在屏幕中创建一个登录屏幕,用户可以输入手机号码并单击登录按钮 模型表将在 OTP 验证表必须关闭并导航后打开进行顶部验证在仪表板上。

这里我在那个contentView上创建了一个内容视图,点击Open model按钮,点击done后模型表(sheetView)将打开strong> 按钮表将关闭,然后屏幕从 ContentView 导航到 DashboardView

// 内容视图

struct ContentView: View {

    @State var isAction: Bool = false
    @State var isDashboard: Bool = false

    var body: some View {

        NavigationView{

            Button(action: {
                self.isAction.toggle()
            }) {
                Text("Open Model")
            }.sheet(isPresented: $isAction) {

                sheetView(isDissmis: self.$isAction) { (isNavigateOnDashboard) in

                    print(isNavigateOnDashboard ?? false)

                    return self.isDashboard = isNavigateOnDashboard ?? false
                }
            }
            NavigationLink(destination: DashboardView(), isActive: self.$isDashboard) {
                EmptyView()
            }
        }
    }
}

//sheetView:-它以工作表的形式呈现为modalPresentationStyle

struct sheetView: View {

    @Binding var isDissmis: Bool
    var isNavigateDashboard: ((Bool?)) -> Void?
    var body: some View {

        NavigationView{
            Text("Here i have to verifiy Some details")
                .navigationBarItems(trailing: doneButton)
        }
    }

    var doneButton: some  View {

        Button(action: {
            self.isDissmis = false
            self.isNavigateDashboard(true)
        }) {
            Text("Done").bold()
        }
    }
}

//仪表板:-关闭模型(工作表)屏幕后应在仪表板上导航。

struct DashboardView: View {

    var body: some View {

        TabView{

            Text("Home").tabItem{
                Image(systemName: "1.circle")
                Text("Home")
            }

            Text("Activity").tabItem{
                Image(systemName: "2.circle")
                Text("Activity")
            }
            Text("profile").tabItem{
                Image(systemName: "3.circle")
                Text("profile")
            }
        }
    }
}

有什么线索吗? ??????????

【问题讨论】:

    标签: model navigation swiftui uimodalpresentationstyle swiftui-navigationlink


    【解决方案1】:

    您可以通过这种方式更改您的ContentViewbody,当您关闭工作表视图时,它将导航到DashboardView

    另外,您的SheetView 中无需使用 clouser 回调

    
    var body: some View {
            NavigationView{
                VStack {
                    Button(action: {
                        self.isAction.toggle()
                    }) {
                        Text("Open Model")
                    }.sheet(isPresented: $isAction, onDismiss: {
                        self.isDashboard.toggle()
                    }) {
                        sheetView(isDissmis: self.$isAction)
                    }
                    NavigationLink(destination: DashboardView(), isActive: $isDashboard) {
                        EmptyView()
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多