我正在开发一个支持 iOS 14 及更高版本的应用程序,但我想使用一些 SwiftUI 3 属性包装器,例如@FocusState
.
我该如何解决这个问题Stored properties cannot be marked potentially unavailable
error?
这是我们代码的简化版本,它适用于 Xcode 13,但无法使用 Xcode 14 进行编译。
struct MyView: View {
enum Field: Hashable {
case username
}
@State private var myText: String = ""
@available(iOS 15, *)
@FocusState private var focusedField: Field?
var body: some View {
if #available(iOS 15, *) {
TextEditor(text: $myText)
.focused($focusedField, equals: .username)
} else {
TextEditor(text: $myText)
}
}
}
我无法使用具有后备存储的计算属性解决方法是计算属性不能有属性包装器。
除了几乎相同的副本之外,我还可以使用其他解决方法吗?MyView
?
一种可能的方法是将所有依赖部分分离到一个子视图中,并将其标记为可用于新操作系统。
这是一个演示:
struct MyView: View {
enum Field: Hashable {
case username
}
@State private var myText: String = ""
@available(iOS 15, *) // << here !!
struct NewTextEditor: View {
@Binding var text: String
@FocusState private var focusedField: Field?
var body: some View {
TextEditor(text: $text)
.focused($focusedField, equals: .username)
}
}
var body: some View {
if #available(iOS 15, *) {
NewTextEditor(text: $myText)
} else {
TextEditor(text: $myText)
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)