SwiftUI - NavigationView 错误信息 - 传递给不接受参数的调用的参数

7

我正在尝试在SwiftUI中实现一个非常基本的NavigationView。当我尝试使用其他网站上看到的示例代码时,它会在Xcode中生成错误消息。我不确定为什么或如何修复它。

我已经尝试过清理项目,退出Xcode-Beta并重新启动它,但没有奏效。


struct ContentView : View {
    var body: some View {
        NavigationView {
            Text("This is a great app")
        }
    }
}

我认为上面的代码应该是可以工作的,但我收到的错误信息显示:

“传递给不接受参数的调用的参数。”

您有什么想法或建议吗?

在我的电脑上编译没有问题 - 错误可能在其他地方。目前Clang的错误信息有点误导人。 - Matteo Pacini
@MatteoPacini 谢谢!你给了我重新开始一个干净的Xcode项目的想法,这解决了问题。虽然有点奇怪,但考虑到我们还处于测试阶段,我会将此解决方案添加到我的工具包中,并立即在一个干净的项目中测试它们是否应该正常工作。 - mikereining
一个简单的“Product > Clean Build Folder”就解决了我的问题。 - Chris Neve
7个回答

11

我也遇到了这个错误信息,并且找出了自己的错误,感觉自己像个傻瓜。哈哈。

看看这个: Error

我花了一段时间才意识到我的结构体与先前定义的结构体VStack同名了。哎呀!

所以我想知道您的项目中是否也有一个同样的文件。


9

VStack只能接受10个参数。 如果超过10个,将出现错误,因此您应该将其嵌套。

来自

VStack{

}

to

VStack{
    VStack{
    }
    VStack{
    }  
}

1
说一个有趣的小故事,我刚刚浏览了一下Swift,因为大约一年前曾经尝试学习它,现在又重新开始。我清楚地记得一年前跟着教程添加一个间隔符号,结果却出现错误,让我非常困惑。当时我不知道,答案其实很简单,就是我超过了参数限制。真是太棒了! - jclasley

5

检查你的应用程序是否有名为“NavigationView”的Swifui类。 此外,当您从NavigationView跳转到定义时,它应该引用:

  @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 7.0, *)
  public struct NavigationView<Content> : View where Content : View {

  public init(@ViewBuilder content: () -> Content)

/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
public typealias Body = Never
}

5

测试 Xcode 11.2.1,它仍然存在缺陷。我注意到当我不断向我的 ContentView 添加原始视图时,我开始收到像“传递给没有参数的调用”的错误,以及之前能够正常工作的原始视图会出现“表达式类型在没有更多上下文的情况下是模糊的”等错误。

例如,当我替换掉...

ScrollView {
            VStack {
        Text
        Button
        Image
        Text
        Button
        Image
        Text
        Button
        Image
        ...
        }
    }

使用

       ScrollView {
            VStack {
        VStack {
            Text
            Button
            Image
        }
        VStack {
            Text
            Button
            Image
        }
        VStack {
            Text
            Button
            Image
        }
        ...
        }

我的代码又开始编译和运行了。


1
我发现一个问题,当我无意中尝试重新定义Text结构体时。请检查您自定义类的命名是否与SwiftUI中的类相同。

0

@Matteo Pacini 帮助我找到了答案。当我开始一个新的 Xcode 项目来测试上面的代码时,一切都正常。在我的其他项目中尝试 SwiftUI 并测试许多不同的代码时,我有很多文件,但由于某种原因,XCode 总是生成此错误。

当我在一个新项目中尝试所有内容时,它可以正常工作。在测试时要注意这一点。希望这可以帮助其他人避免类似的问题。


0
将'Text("This is a great app")'嵌入到VStack中。
struct ContentView : View {
    var body: some View {
        NavigationView {
          Stack {
            Text("This is a great app")
          }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接