如何在 swiftui 中转换到新视图

问题描述 投票:0回答:1

我的目标是让用户点击一个按钮,然后让他们选择是或取消,这很好用。如果选择是,它应该移动到相机视图。我收到错误消息:“NavigationLink”初始化程序的结果未使用。

struct ContentView: View {

@State private var showAlert = false

 var body: some View {
        NavigationStack
        {
                VStack {
                        
                    Button{
                        showAlert = true
                    } label: {
                        Text("+")
                    }
                        .frame(width: 40, height: 40)
                        .symbolVariant(.fill)
                        .background(.red)
                        .cornerRadius(15)
                        .foregroundColor(.white)
                        .padding(.trailing,300)
                    Spacer() 
            }
            .alert("Create Event Here?", isPresented: $showAlert) {
                Button("Yes"){NavigationLink("addCameraView", destination: CameraView())//*****gets the error
                }
                Button("Cancel", role: .cancel) { }
                }
        }
struct CameraView: View{
    
    @State private var sourceType: UIImagePickerController.SourceType = .photoLibrary
    @State private var selectedImage: UIImage?
    @State private var imagePickerDisplay = false

    var body: some View {
        
        NavigationView {
            VStack {
                if selectedImage != nil {
                    Image(uiImage: selectedImage!)
                        .resizable()
                        .aspectRatio(contentMode: .fit)
                        .clipShape(Circle())
                        .frame(width: 300, height: 300)
                } else {
                    Image(systemName: "snow")
                        .resizable()
                        .aspectRatio(contentMode: .fit)
                        .clipShape(Circle())
                        .frame(width: 300, height: 300)
                }
                Button("Camera") {
                    self.sourceType = .camera
                    self.imagePickerDisplay.toggle()
                }.padding()
            }
            .navigationBarTitle("Take a Photo of the Event")
            .sheet(isPresented: self.$imagePickerDisplay) {
                ImagePickerView(selectedImage: self.$selectedImage, sourceType: self.sourceType)
            }
        }
    }
}
}
swift swiftui uialertview swiftui-navigationlink swiftui-button
1个回答
1
投票

要使用按钮导航,我们需要使用变量作为触发器。将按钮包裹在 NavigationLink 中并将关联的变量更新为适当的值将触发导航。

您将在下面找到更新的ContentViewCameraView保持不变。

import SwiftUI

struct ContentView: View {
    
    @State private var showAlert = false
    @State var selection: Int? = nil
    
    var body: some View {
        NavigationStack
        {
            
            VStack {
                
                Button{
                    showAlert = true
                } label: {
                    Text("+")
                }
                .frame(width: 40, height: 40)
                .symbolVariant(.fill)
                .background(.red)
                .cornerRadius(15)
                .foregroundColor(.white)
                .padding(.trailing,300)
                Spacer()
            }
            .alert("Create Event Here?", isPresented: $showAlert) {
                NavigationLink(destination: CameraView(), tag: 1, selection: $selection) {
                    Button("Yes"){
                        selection = 1
                    }
                }
                Button("Cancel", role: .cancel) {
                    selection = nil
                }
                
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.