Swiftui 应用程序协议不适用于视图';s预览提供程序
以下代码可以在ios13中使用Swiftui 应用程序协议不适用于视图';s预览提供程序,swiftui,Swiftui,以下代码可以在ios13中使用 import SwiftUI struct ContentView: View { var body: some View { LoginView() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } 但当我尝试使用ios14功能应用程序协议时
import SwiftUI
struct ContentView: View {
var body: some View {
LoginView()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
但当我尝试使用ios14功能应用程序协议时,预览报告要求ContentView确认查看错误
import SwiftUI
@main
struct ContentView: App {
var body: some Scene {
WindowGroup {
LoginView()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这是因为在新版本中,ContentView
不再声明为View
,而是声明为App
(我建议将其重命名为ContentApp
,以避免混淆)
预览的签名为:
static var previews: some View
这意味着它需要返回一些视图(而不是一些应用程序)
在您的情况下,您可能希望在预览中显示LoginView
:
struct LoginView_Previews: PreviewProvider {
static var previews: some View {
LoginView()
}
}
或者,如果您想显示ContentView
:
@main
struct ContentApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
LoginView()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这相当于命名惯例。最好不要将应用程序命名为视图(在本例中为ContentView)。。。Xcode使用不同的符号表示从模板创建。用App将入口点命名为某物,不要将其用作视图,因为它不是视图,而是App。。。。就像AppDelegate不是UIView,对吗?ContentView确认应用协议并返回一些场景,这是否意味着它不能在xcode 12中预览?