首页 > 解决方案 > 通知内容扩展中的 SwiftUI?

问题描述

可以在通知内容扩展中使用 SwiftUI 视图吗?Xcode 模板只提供了一个视图控制器,可以这样做吗?

标签: iosswiftui

解决方案


是的,您应该能够在UIViewControllerusing中嵌入 SwiftUI 视图UIHostingController。这里有更广泛的答案(在现有 UIKit 应用程序中包含 SwiftUI 视图UNNotificationContentExtension),但这里有一个使用 Xcode 模板作为基础的简短版本:

class NotificationViewController: UIViewController, UNNotificationContentExtension {
    @IBOutlet var container: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let childView = UIHostingController(rootView: SwiftUIView())
        addChild(childView)
        childView.view.frame = container.bounds
        container.addSubview(childView.view)
        childView.didMove(toParent: self)
    }
    
    func didReceive(_ notification: UNNotification) {
        //
    }
}

推荐阅读