【发布时间】:2020-11-10 08:47:43
【问题描述】:
我有一个类,我想用另一个视图中设置的绑定变量来初始化它。
查看->
struct CoverPageView: View {
@State var numberOfNumbers:Int
var body: some View {
NavigationView {
GeometryReader { geometry in
VStack(alignment: .center, spacing: 0){
TextField("Multiplication Upto:", value: self.$numberOfNumbers, formatter: NumberFormatter())
}
}
}
}
需要使用 @Binding var $numberofNumbers 初始化的类 -
import SwiftUI
class MultiplicationPractice:ObservableObject {
@Binding var numberOfNumbers:Int
var classNumofNumbers:Int
init() {
self.classNumofNumbers = self.$numberOfNumbers
}
}
init 语句显然给出了 self 未初始化的错误,并且正在使用实例 var 进行初始化,这是不允许的。
我该如何规避这个问题?该类需要使用用户在第一个视图中输入的数字进行初始化。我写了大约。代码在这里,请忽略任何错别字。
【问题讨论】:
-
你不要用
var classNumofNumbers:Int传递,直接从init函数传递。MultiplicationPractice(numberOfNumbers: $numberOfNumbers) -
抱歉 - 我这样展示它是因为实际的类有同一个类的已发布 var。一旦我将 $numOfNumbers 传递给初始化程序 - 它就会给出 self is not initialized 错误 - 如果你想用绑定值初始化一个 var 也是一样的。 --
-
--类似于 - import SwiftUI class MultiplicationPractice:ObservableObject { Binding var numberOfNumbers:Int Published var MulGame:MultiplicationGame = MultiplicationGame(maxNumber: $numberofNumbers)} // - 这是它给出错误的地方
标签: class binding swiftui init