我正在构建一个 SwiftUI 应用程序,ViewController通过UIViewControllerRepresentable. 目标是在我的 SwiftUI 应用程序中显示 a UITextView。这个的实现很简单,如下所示:
// iOSTextView.swift
import SwiftUI
struct iOSTextView: UIViewControllerRepresentable {
@Binding var document: Document
@EnvironmentObject var userData: UserData
func makeUIViewController(context: Context) -> some UIViewController {
let view = iOSTextViewController()
return view
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
}
}
Run Code Online (Sandbox Code Playgroud)
注意EnvironmentObject命名的UserData. 它是一个包含一些通用数据的类,这些数据应该与我的应用程序中的每个视图共享,包括 UITextView ViewController。
// UserData.swift
import Foundation
final class UserData: ObservableObject {
@Published var someValue = 1
}
Run Code Online (Sandbox Code Playgroud)
下面是我的iOSTextViewController视图控制器:
// iOSTextViewController.swift …Run Code Online (Sandbox Code Playgroud) 无论如何,在文件选择器屏幕出现之前,是否可以在启动基于 SwiftUI 文档的应用程序时显示入门屏幕?
我现在可以做的是在用户创建新文件或打开现有文件后显示入门屏幕,使用UserDefaults:
import SwiftUI
struct ContentView: View {
@Binding var document: AnyDocument
@State var onboarding: Bool
var body: some View {
if onboarding {
OnBoarding(showOnboarding: $onboarding)
} else {
// Normal document view
...
}
}
}
Run Code Online (Sandbox Code Playgroud)