【问题标题】:NavigationLink with SwiftUI: Type of expression is ambiguous without more contextNavigationLink 与 SwiftUI:表达式类型不明确,没有更多上下文
【发布时间】:2019-11-12 19:20:18
【问题描述】:

我正在尝试使用我制作的按钮导航到另一个视图。我为另一个视图完成了它,但是当将它应用到下一个视图时,它显示错误“表达式类型不明确,没有更多上下文。”我从其他人那里了解到,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
    }
}

【问题讨论】:

  • 我还想指出,当我在 NavLink 的文本中放置一些内容时,它仍然显示相同的错误。

标签: ios swift swiftui navigationview navigationlink


【解决方案1】:

您在struct signUp 内的var body 的第一行中使用了NavigationLink 而不是NavigationView

所以这个:

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

应该是:

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

NavigationLink 就像一个导航触发器,而NavigationView 负责处理视觉、动画和其他有关导航的东西。

请注意,由于 SwiftUI 非常年轻,Xcode 无法准确检测出问题所在,有时会显示错误或不清楚的消息。但苹果一直在努力,并逐个发布地改进它。

【讨论】:

  • 谢谢?不敢相信我错过了??‍♂️?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2019-04-23
  • 1970-01-01
相关资源
最近更新 更多