使用输入的字符串作为出现在 SwiftUI 的 TextField 中的默认文本
Posted
技术标签:
【中文标题】使用输入的字符串作为出现在 SwiftUI 的 TextField 中的默认文本【英文标题】:Using an inputted string as a default text appearing in SwiftUI's TextField 【发布时间】:2020-01-04 13:04:26 【问题描述】:这是一个简单的struct
,涉及TextField
,效果很好。
struct NewProjectView: View
@State var name = ""
@State var lastName = ""
var body: some View
VStack
TextField("Name: ", text: $name)
TextField("Last Name: ", text: $lastName)
现在,我修改了struct
以接受两个参数,并尝试使它们等于@State
变量。
struct NewProjectView: View
var oldName: String
var oldLastName: String
@State var name = oldName // ERROR
@State var lastName = oldLastName // ERROR
var body: some View
VStack
TextField("Name: ", text: $name)
TextField("Last Name: ", text: $lastName)
struct NewProjectView_Previews: PreviewProvider
static var previews: some View
NewProjectView(oldName: "James", oldLastName: "Morton")
但是出现如下错误
不能在属性初始化器中使用实例成员“oldName”;属性初始化器在“self”可用之前运行
我把self.
放在oldName
和oldLastName
前面,又出现了一个,
使用未解析的标识符“self”
此时我不知道该怎么办。我希望姓名和姓氏都显示在TextField
s 中。
【问题讨论】:
【参考方案1】:如果此视图旨在更改姓名和姓氏,那么您需要@Binding
,而不是@State
喜欢
struct NewProjectView: View
@Binding var name: String
@Binding var lastName: String
var body: some View
VStack
TextField("Name: ", text: $name)
TextField("Last Name: ", text: $lastName)
所以创建它你可以传入旧名和姓氏,比如来自某个模型。
【讨论】:
以上是关于使用输入的字符串作为出现在 SwiftUI 的 TextField 中的默认文本的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI+CoreData项目出现The operation couldn’t be completed(GenericObjCError error 0)错误的解决
UIPickerView 作为 SwiftUI 中 TextField() 的输入