小编Sam*_*lki的帖子

如何在 UIKit ViewController 中使用 EnvironmentObject

我正在构建一个 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)

uikit ios swiftui uiviewcontrollerrepresentable

5
推荐指数
1
解决办法
2348
查看次数

基于 SwiftUI 文档的应用程序启动时的入门屏幕

无论如何,在文件选择器屏幕出现之前,是否可以在启动基于 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)

macos document-based ios swift swiftui

5
推荐指数
0
解决办法
361
查看次数