我是 Swift 和 SwiftUI(以及一般编程)的新手。
我正在尝试构建一个关于统计的应用程序,由于这些特定需求,我不得不编写一个带有数字和基本操作的自定义键盘。问题是我想将 X 值和 Y 值存储在两个不同的数组中,所以我必须调用我的“ChartKeyboard”两次:一次用于写入 X 值,另一次用于写入 Y 值。这是我用来调用键盘的代码:
Group {
if isXorYSelected == .x {
ChartKeyboard(isShown: $keyShown, txtInput: $sampleData.XValues[arrayPosition])
}
if isXorYSelected == .y {
ChartKeyboard(isShown: $keyShown, txtInput: $sampleData.YValues[arrayPosition])
}
}
数据存储在自定义 ChartData 对象中:
struct ChartDataObject: Identifiable {
let id = UUID()
var name: String
let date: Date
var regType: regressionType
var dataX: [Double]
var dataY: [Double]
var regressionCoef: Double
var slope: Double
var origin: Double
}
以及一些状态变量,以防您想知道:
struct NewChart: View {
@State var keyShown = false
@State var sampleData = XYData(XValues: [" "], YValues: [" "])
var newChartType = ["Standard Addition", "External Standard","Internal Standard"]
@State private var selectedChartType = 0
/*
Types are:
1 = Standard Addition
2 = External Standard
3 = Internal Standard
*/
@State var newChartTitle = ""
@State var newChartDate = Date()
@State var isXorYSelected = isXorY.x
@State var arrayPosition = 0
(...)
当从 isXorYSelected 从 .x 更改为 .y 时,结果是一个奇怪的动画:
谢谢。
在if
子句中拥有视图可能会导致它被重绘。相反,您可以使用三元表达式更改参数:
ChartKeyboard(isShown: $keyShown, txtInput: isXorYSelected == .x ? $sampleData.XValues[arrayPosition] : $sampleData.YValues[arrayPosition])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句