在 SwiftUI 中返回一个或两个不同文本视图的速记参数名称 $0 上添加条件
Posted
技术标签:
【中文标题】在 SwiftUI 中返回一个或两个不同文本视图的速记参数名称 $0 上添加条件【英文标题】:Add conditions on shorthand argument name $0 that returns one or two different text views in SwiftUI 【发布时间】:2019-12-23 22:31:28 【问题描述】:我有以下问题,并想添加一些引用func
的条件,例如if conditionName() == $0
是真的这样做...否则...在Button($0)
内使用速记参数名称$0
。有任何想法吗?提前谢谢你。
struct ContentView: View
let emojiMoves = ["????", "????", "✂️"]
let textMoves = ["rock", "paper", "scissors"]
@State private var appChoice = Int.random(in: 0...2)
@State private var userChoice = Bool.random()
var body: some View
HStack(alignment: .center, spacing: 30)
ForEach(self.emojiMoves, id: \.self )
Button($0)
【问题讨论】:
您的意思是在Button($0)
内还是代替?
在 Button($0) 内,谢谢!
你不能在另一个闭包中使用一个闭包的速记参数,因为速记只指自己的闭包,所以接下来要传递参数你必须使用明确命名的参数,如下所示。
@Asperi 是正确的,我的意图是在 Button($0) 中添加这样的条件,我想我有一个可行的解决方案。感谢您的反馈!
【参考方案1】:
你基本上不能,也没有必要,你可以尝试使用变量:
ForEach(self.emojiMoves, id: \.self ) oneString in
Button(Text(oneString))
if conditionName() == oneString
【讨论】:
谢谢@E.Coms,这是一个不错的解决方案,但我正在寻找其他解决方案。我想我有下面的解决方案【参考方案2】:在三元条件运算符的帮助下,我找到了这个解决方案,它在 Button
中加载带有简写参数名称 $0 的按钮。
ForEach(self.emojiMoves, id: \.self )
Button($0 == "?" ? "?" : $0 == "?" ? "?" : "✂️")
谢谢
【讨论】:
以上是关于在 SwiftUI 中返回一个或两个不同文本视图的速记参数名称 $0 上添加条件的主要内容,如果未能解决你的问题,请参考以下文章