我正在为macOS创建一个特殊的Textfield
。我想创建我自己的初始化器,用于特殊命名。但是当我用@Binding
创建初始化器时,它给出了两个错误。
我不知道为什么它给出了这个初始化错误。它显然是在那里初始化的。下面是我的代码:
struct MacOSTextField: View{
@Binding var text: String
var displayText: String
var body: some View{
RoundedRectangle(cornerRadius: 0.4)
.overlay {
TextField(displayText, text: $text)
}
}
init(text: String, displayText: String) {
self.displayText = displayText
self.text = text << Error: 'self' used before all stored properties are initialized
} << Error: Return from initializer without initializing all stored properties
}
当我删除self.text = text
或改变它的位置时,它不起作用。下面是删除self.text = text
时的代码:
struct MacOSTextField: View{
@Binding var text: String
var displayText: String
var body: some View{
RoundedRectangle(cornerRadius: 0.4)
.overlay {
TextField(displayText, text: $text)
}
}
init(text: String, displayText: String) {
self.displayText = displayText
self.text = text
} << Error: Return from initializer without initializing all stored properties
任何帮助都将不胜感激。
1条答案
按热度按时间cbeh67ev1#
由于
text
是一个@Binding
,因此需要将其传递给init
:这当然假设持有这个观点的观点将具有如下内容:
还要注意的是,您所称的
displayText
实际上是一个占位符文本。