【问题标题】:How can I preview a SwiftUI View shared between iOS and WatchOS?如何预览 iOS 和 WatchOS 之间共享的 SwiftUI 视图?
【发布时间】:2021-01-24 13:23:12
【问题描述】:

我在带有 Apple Watch Extension 的 iOS 中使用了一个示例 SwiftUI 视图,当我尝试在 WatchOS“设备”中预览它时出现此错误:

运行目标 iPhone 12 mini 对运行方案“TestApp WatchKit App”无效 我已经尝试了一切。像建议的 here 那样重启 Xcode 是第一件事。

【问题讨论】:

    标签: ios swiftui apple-watch preview swiftui-previews


    【解决方案1】:

    我最终让它“工作”的方式是使用固定预览。

    这是我的示例视图,它位于“SharedViews”文件夹中,并且在 TestApp 和 TestApp WatchKit 扩展中具有目标成员资格:

    struct CustomTextView: View {
        let caption: String
        let foreground: Color
        var body: some View {
            VStack {
                Text(caption)
                    .padding()
                Text("Colored\r" + caption)
                    .foregroundColor(foreground)
                    .padding()
            }
        }
    }
    
    //struct CustomTextView_Previews: PreviewProvider {
    //    static var previews: some View {
    //        CustomTextView(caption: "Shared Preview", foreground: .blue)
    //    }
    //}
    

    为了在 Watch 设备中预览这个视图,我在 TestApp WatchKit Extension 中创建了一个“Helpers”文件夹,并在其中创建了一个“Container View”,它只是 TestApp WatchKit Extension 的成员:

    struct CustomTextViewWatchPreview: View {
        var body: some View {
            CustomTextView(caption: "Watch Preview Container", foreground: .red)
        }
    }
    
    struct CustomTextViewWatchPreview_Previews: PreviewProvider {
        static var previews: some View {
            CustomTextViewWatchPreview()
        }
    }
    

    现在要预览我的 CustomTextView,我打开 ..Preview 文件并固定它的预览。然后我切换回 CustomTextView 文件,应用我的更改并在固定预览中查看它们。为了摆脱“无法预览...”错误,我像上面一样注释掉自定义文本视图的自己的预览。

    要在 iPhone 中预览,我更改了运行目标,取消注释自己的预览并取消固定 Watch Preview。

    有人有更好的解决方案吗?也许我可以同时在 iPhone 和 Apple Watch 中预览我的视图?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      相关资源
      最近更新 更多