gpt4 book ai didi

ios - SwiftUI 如果让内部 View

转载 作者:行者123 更新时间:2023-12-01 17:35:33 25 4
gpt4 key购买 nike

我想要 View 中的 if let 语句.

@ObservedObject var person: Person?
var body: some View {
if person != nil {
// this works
}
if let p = person {
// Compiler error
}
}

包含控制流语句的闭包不能与函数生成器“ViewBuilder”一起使用

最佳答案

是的,代码快照中请求的符号是不允许的,至少现在是这样,但是可以通过以下 实现预期的结果简单的方法 - 将控制流提取到函数中 :

var person: Person? // actually @ObservedObject does not allowed optional
var body: some View {
VStack {
if person != nil {
// same as before
}
personViewIfExists() // << just extract it in helper function
}
}

private func personViewIfExists() -> some View { // generates view conditionally
if let p = person {
return ExistedPersonView(person: p) // << just for demo
}
}

在某些情况下,可能还需要以下函数变体(尽管它产生相同的结果)
private func personViewIfExists() -> some View {
if let p = person {
return AnyView(ExistedPersonView(person: p))
}
return AnyView(EmptyView())
}

关于ios - SwiftUI 如果让内部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60202885/

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