我有一个从元组列表中读取的选择器,并且有几个关于如何使其工作的问题。我想要做的是选择器显示一些字符串,当用户进行选择时,与字符串对应的值将保存到变量中。然后我想在函数中使用这个变量来计算一些东西,然后将计算结果打印给用户。我目前有:
@State private var rating: Int = 0
func scale(rating: Float, someValue1: Float, someValue2: Float) -> Float{
return (rating + someValue1 * 2.5 + someValue2 * 1.5) / 10
}
var arrayOfTuples: [(score: String, value: Int)] = [
(score: "A+", value: 60),
(score: "A", value: 55),
(score: "A-", value: 50),
(score: "B+", value: 45),
(score: "B", value: 40),
(score: "B-", value: 35),
(score: "C+", value: 30),
(score: "C", value: 25),
(score: "C-", value: 20),
(score: "D+", value: 15),
(score: "D", value: 10),
(score: "D-", value: 5),
(score: "F", value: 0)
]
Picker(selection: $rating, label: Text("Choose")) {
ForEach(0 ..< arrayOfTuples.count) {
Text(self.arrayOfTuples[$0].score)
}
}
此代码仅显示我想要的arrayOfTuples(A+、A、A-等)的分数部分,但是当用户从选择器中选择某些内容时,我认为它不会将相应分数的值保存到变量“评级”。然后我想在按下按钮时使用 rating 来计算函数:
Button(action: {
print(self.scale(rating: Float(self.rating), someValue1: Float(self.someValue1) ?? 0, someValue2: Float(self.someValue2)))
}) {
Text("Calculate")
}
此外,所有这些都是在 Xcode 中创建应用程序时创建的 ContentView 结构内完成的,所以我不知道我是否在声明和定义它们应该在的函数,所以如果有更好的方法请告诉我知道。
此外,选择器是默认选择器。我更喜欢使用滚轮选择器,但是当我使用它时,它会在主屏幕中显示,我希望它仅在用户按下选择按钮时作为弹出窗口出现。
最后,正如您在按钮中看到的那样,该操作正在打印值。但是,我不想打印该值,而是通过弹出框或用户可以看到的其他地方将其显示给用户。
任何想法如何做到这一点?非常感谢你。