You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:06:08