【问题标题】:How can I declare the correct content to import another swiftui file into the contentview file?如何声明正确的内容以将另一个 swiftui 文件导入到 contentview 文件中?
【发布时间】:2020-04-18 19:54:03
【问题描述】:

我对 swift 有点陌生,对我的要求有点困惑。一些背景:我在网上找到了一个人,他为滑动底部视图栏创建了一个 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()
    }
}
}

【问题讨论】:

    标签: ios swift xcode swiftui xcode11


    【解决方案1】:

    SwiftUI 中的错误并不总是显示在它们真正的位置。您的代码 sn-p 中的问题在于:

    let heightDouble = CGFloat(150.00)
    

    它应该是:包含声明的闭包不能与函数构建器'ViewBuilder'一起使用

    试试这个,你会发现问题不在其他视图中:

        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")
                }
    
    
            }
        }
    }
    

    【讨论】:

    • 上面的代码是我整个文件的所有代码。我添加了这些更改,现在出现了更多错误。请看这里imgur.com/a/PIHU0U1
    • 另外,imgur.com/a/GqEjMzo 这是我正在导入的文件中的代码
    • @IsaiahThomas,哦,我想我在CGFloat(150) 中打错了,可能有俄语“C”,尝试复制粘贴:CGFloat(150) 或离开150 或@987654333 @那里,斯威夫特会明白的
    • @IsaiahThomas 有帮助吗?
    • 是的!!!这解决了我的问题。非常感谢!现在我唯一的问题是我无法将 .edgesIgnoringSafeArea(.bottom) 添加到此。我得到一个错误。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多