NavigationLink с SwiftUI: тип выражения неоднозначен без дополнительного контекста

Я пытаюсь использовать созданную мной кнопку для перехода к другому представлению. Я сделал это для другого представления, но при применении его к следующему он показывает ошибку «Тип выражения неоднозначен без дополнительного контекста». Я читал от других людей, что ошибки в SwiftUI иногда не появляются в нужной строке и могут происходить где-то еще.

Вот код, который я написал, который работал с NavigationLink

struct ContentView: View {
    @State private var isActive: Bool = false
    @State private var username: String = ""
    @State private var email: String = ""
    @State private var password: String = ""

    var body: some View {

        NavigationView{
            VStack {
                NavigationLink(destination: signUp(), isActive: self.$isActive) {
                    Text("")
                }

                Image("versLogo")
                    .resizable()
                    .frame(width: 400, height: 400)
                TextField("Username", text: $username)
                TextField("Email", text: $email)
                TextField("Password", text: $password)


                Button(action: {}) {
                    Text("Login")
                }
                Spacer()
                //button for moving to next view
                Button(action: {
                    self.isActive = true
                }) {
                    Text("Don't have an account?")
                }

            }//VStack
        }//nav
    }
}

Вот код, который я написал, применяя его таким же образом, но выдает мне ту ошибку. У меня нет ничего для текста в NavigationLink, потому что я использую кнопку, поэтому я оставил ее пустой.

struct signUp: View {
    @State var isShowingImagePicker = false
    //for the next view
    @State private var isActive: Bool = false

    @State private var username: String = ""
    @State private var email: String = ""
    @State private var password: String = ""
    @State private var confirm: String = ""


    var body: some View {
        NavigationLink{
            VStack {
                NavigationLink(destination: DOB_finalSignUp(), isActive: self.$isActive) {
                    Text("") //ERROR is on this line
                }

                Image(uiImage: UIImage())
                    .frame(width: 200, height: 200)
                    .border(Color.black, width: 1)

                Button(action: {
                    self.isShowingImagePicker.toggle()
                }, label:  {
                    Text("Select Image")
                })


                TextField("Username", text: $username)
                TextField("Email", text: $email)
                TextField("Password", text: $password)
                TextField("Confirm Password", text: $confirm)

                //button for moving to next view
                Button(action: {
                    self.isActive = true
                }) {
                    Text("Continue")
                }
            }//VStack
        }//nav
    }
}

person Mohameth Seck    schedule 12.11.2019    source источник
comment
Я также хочу отметить, что когда я помещаю что-то в текст для NavLink, он все равно говорит об той же ошибке.   -  person Mohameth Seck    schedule 12.11.2019


Ответы (1)


Вы использовали NavigationLink вместо NavigationView в самой первой строке var body внутри struct signUp.

Итак, это:

var body: some View {
    NavigationLink{
    ,,,
    }//nav
}

должно быть:

var body: some View {
    NavigationView{
    ,,,
    }//nav
}

NavigationLink похож на триггер для навигации, в то время как NavigationView отвечает за обработку визуальных элементов, анимации и других вещей, связанных с навигацией.

И обратите внимание, что, поскольку SwiftUI очень молодой, Xcode не может точно определить, в чем проблема, и иногда показывает неправильные или нечеткие сообщения. Но Apple постоянно работает над этим и улучшает его от выпуска к выпуску.

person Mojtaba Hosseini    schedule 12.11.2019
comment
Спасибо ???? Не могу поверить, что пропустил это ????????‍♂️???? - person Mohameth Seck; 12.11.2019