我对 swift 有点陌生,对我的要求有点困惑。一些背景:我在网上找到一个人,他为滑动底部 View 栏创建了一个 swiftui 文件,我想将它实现到我的 ContentView swiftui 文件中。在 xcode 中单击“修复”后,我在互联网上四处寻找并尝试着玩弄它,但我没有运气。
这是错误的图像,我从 xcode 中单击“修复”提示,以及 BottomSheetView.swift 文件的代码 -> https://imgur.com/a/GqEjMzo
有人可以帮助我解释 swift 到底要求我做什么,并让我知道如何解决这个错误吗?
这是我的代码:
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack{
VStack{
MapView()
.edgesIgnoringSafeArea(.all)
let heightDouble = CGFloat(150.00)
BottomSheetView(isOpen: .constant(true), maxHeight: heightDouble, content: <#() -> Content#>)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
}
最佳答案
SwiftUI 中的错误并不总是显示在它们真正所在的位置。您的代码段中的问题在于以下行:
let heightDouble = CGFloat(150.00)
它应该是:包含声明的闭包不能与函数生成器“ViewBuilder”一起使用
试试这个,你会发现问题不在其他 View 中:
var body: some View {
ZStack{
VStack{
Text("hello") // replaced MapView()
.edgesIgnoringSafeArea(.all)
// you need to delete this row to avoid error
let heightDouble = CGFloat(150.00)
Text("world") // replaced BottomSheetView(...)
}
}
}
body
变量中的代码必须返回some View
,但在其中定义常量违反了此规则
更新
在 BottomSheetView
中,您有 content
,这是另一个 View
。我没有看到所有的代码,但我认为它应该是这样的:
struct ContentView: View {
@State var isOpen = true
var body: some View {
ZStack{
VStack{
MapView()
.edgesIgnoringSafeArea(.all)
BottomSheetView(isOpen: self.$isOpen, maxHeight: CGFLoat(150)) {
Text("bottom")
}
}
}
}
关于ios - 如何声明正确的内容以将另一个 swiftui 文件导入到 contentview 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524556/