SwiftUI TextEditor文本复制报错及类Storyboard控件命名赋值问题咨询
问题1解决方案:赋值报错修复
错误原因如下:
- 你代码中
dosomething方法里的$符号使用错误:SwiftUI中$前缀用于获取属性对应的Binding绑定类型,仅在给视图组件传递双向绑定参数时使用。要读取/修改@State、@Binding包裹的实际值,直接使用变量名本身即可,不需要加$。 - 赋值类型不匹配:你要复制的是文档对象的文本属性
document.text,不能直接把整个test2Document类型的document对象赋值给String类型的newtexteditor。
修正后的完整代码如下:
struct ContentView: View { @Binding var document: test2Document @State var newtexteditor: String = "press the button" var body: some View { VStack{ //main text editor TextEditor(text: $document.text) //divider Divider() //new text editor TextEditor(text: $newtexteditor).padding() //button Button("test", action: dosomething) } } func dosomething () { newtexteditor = document.text } }
问题2:关于SwiftUI中类似Storyboard控件赋值的实现
SwiftUI是声明式UI框架,和Storyboard的命令式开发逻辑有本质区别,不需要给视图对象设置名称/标签来获取引用赋值。所有视图展示的内容都和你定义的状态变量做双向绑定,你直接操作对应的状态变量即可实现原来textbox1.text = textbox2.text的效果,系统会自动同步更新关联的视图内容,不需要手动操作视图实例。
内容的提问来源于stack exchange,提问作者zack mcdonald
相关产品推荐
相关产品推荐

