首页 > 解决方案 > Xcode 12.3 将任何新内容放入新预览中

问题描述

Xcode 预览截图

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello")
        Text("World")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

上面的代码产生了两个预览窗口:一个带有文本“Hello”,第二个窗口包含“World”

每次我添加诸如 Text() 之类的东西时,它都会出现在第二个预览窗口中。添加更多元素会自动导致新的预览窗口。PreviewProvider 中的代码保持不变,因此它不是重复的预览,它只是每个元素的单独预览......

我尝试重新启动 Xcode,更改模拟器设备,创建新项目 - 没有任何变化。

它是在我在一个项目中添加重复预览后开始的,然后通过删除 PreviewProvider 中的相应行将其删除。之后,所有新项目或旧项目中的所有新文件都显示出这种奇怪的行为。

标签: xcodeswiftui

解决方案


body默认情况下是SwiftUI 2.0 中的a @ViewBuilder,所以它只是内联生成一组视图,因此有两个 Text 元素你有两个预览。如果你只想要一个预览,你body应该有一个顶视图,比如

struct ContentView: View {
    var body: some View {
      HStack {
        Text("Hello")
        Text("World")
      }
    }
}

推荐阅读