gpt4 book ai didi

SwiftUI:有条件地显示不同的工作表项目

转载 作者:行者123 更新时间:2023-12-05 02:02:54 25 4
gpt4 key购买 nike

我在努力思考如何使用 .sheet(item:content:) 时失败得很惨。我知道这里和其他平台上有很多信息,但我就是无法使用...

这是我想要的 View 的抽象——我不知道我在这里做错了什么:

import SwiftUI

enum SheetView: String, Identifiable {
var id: Self { self }
case sheetA = "Sheet A"
case sheetB = "Sheet B"
}

struct SheetViewTest: View {
@State private var showSheet: SheetView? = nil

var body: some View {
Form {
Button(action: {
showSheet = .sheetA
print("Button \(showSheet?.rawValue) tapped…")
}, label: {
Text(SheetView.sheetA.rawValue)
})
Button(action: {
showSheet = .sheetB
print("Button \(showSheet?.rawValue) tapped…")
}, label: {
Text(SheetView.sheetB.rawValue)
})
}
.sheet(item: $showSheet) { sheet -> View in
Text(sheet.rawValue)
}
}
}

struct SheetViewTest_Previews: PreviewProvider {
static var previews: some View {
SheetViewTest()
}
}

我在 body 上得到的错误如下:协议(protocol)类型“View”的值不能符合“View”;只有结构/枚举/类类型可以符合协议(protocol),这是由于 .sheet 修饰符导致当我注释掉它时, View 工作得很好...

最佳答案

只需删除闭包返回类型(从返回内容自动推断),即

    .sheet(item: $showSheet) { sheet in      // << here !!
Text(sheet.rawValue)
}

关于SwiftUI:有条件地显示不同的工作表项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65567379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com