不修改应用现有结构 如何让SwiftUI的ContentView_Previews正常运行
问题根源
你当前的预览无法运行是因为PreviewProvider的previews是静态属性,而你定义的@State var function是ContentView_Previews的实例属性,静态上下文无法直接访问实例成员,因此会触发编译错误。
解决方法
不需要修改你现有的App和ContentView业务代码,只需要调整预览部分的代码,把@State变量放在previews计算属性的内部作用域即可,修改后的预览代码如下:
struct ContentView_Previews: PreviewProvider { static var previews: some View { // 局部定义State变量,适配静态上下文要求 @State var function:(() -> Void)? = {} return ContentView(myFunction: $function) } }
这个修改完全保留了你原有嵌套同类型子对象、父对象调用子对象方法的逻辑,不会改动任何业务层的代码结构。
内容的提问来源于stack exchange,提问作者Degtiarev Aleksei
相关产品推荐
相关产品推荐

