【发布时间】:2020-11-23 20:21:43
【问题描述】:
我在使用 @State 属性时遇到了问题。
我的 ContentView.swift 看起来像这样:
import SwiftUI
struct ContentView: View {
@State var showText: Bool = true
var Mod: Modifier
init() {
Mod = Modifier(showText: $showText) // Throws error -> 'self' used before all stored properties are initialized ('self.Mod' not initialized)
}
var body: some View {
VStack {
if showText == true {
Text("Hello, World!")
}
Mod
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
而我的 Modifier.swift 中调用 Modifier 视图的代码如下:
import SwiftUI
struct Modifier: View {
@Binding var showText: Bool
var body: some View {
VStack {
Button("Hide Text") {
self.showText.toggle()
}
}
}
}
我从我的实际项目中创建了这个简化的代码,我的问题更容易理解。
问题
问题是init函数中的代码导致错误,我不知道如何解决。
我尝试了什么以及我需要什么
因为这只是我的实际代码的简化版本,所以我需要对我的代码有一些要求:
- Mod 不能是计算变量
- 不知何故,我需要
Modifier视图作为我的 ContentView 中名为Mod的变量 - 当我删除
@State属性和@Binding属性和$时,代码工作并产生0 个错误。但我需要使用@State属性(不幸的是,这会导致我的代码出错) - 隐藏和显示文本的按钮也应该可以工作
如果有人能给我提示,我将非常感激。非常感谢您的帮助!
【问题讨论】: