ios - 如何从小部件扩展导航到 UIKit viewController?

标签 ios swift swiftui widget

我目前正在尝试使用 SwiftUI 制作一个小部件。
假设我的代码是这样的:

struct WidgetView: View {
    var data : DataProvider.Entry
    var body: some View {
        ZStack {
            Image("Clicker")
                .padding(.all, 15)
        }.widgetURL(URL(string: "ClickerViewController"))
        .padding(.all, 30)
        .background(Color.green)
    }
}
目前,点击小部件会打开应用程序的主屏幕。想要导航到特定屏幕。
支持的家庭: . 系统小 - 所以需要使用 . 小部件网址 而不是 .Link
那么URL是Clicker的地方,如何导航到名为ClickerViewController的viewController ?
如何处理这些链接?在不久的将来,任何示例或解释都会对我和许多其他人有所帮助;)
谢谢!

最佳答案

这是可能的方法

var body: some Scene {
    @StateObject private var appState = AppState()

    WindowGroup {
        ContentView()
            .environmentObject(appState)
            .onOpenURL(perform: { url in
                appState.handle(url)       // redirect to app state
            })
    }
}
AppState可以有,例如
class AppState: ObservableObject {
    @Published var appScreen: _SomeEnumType_

    func handle(url: URL) {
        // ... update `appScreen` here correnspondingly
    }
}
所以里面ContentView根据应用程序状态,您可以切换显示的 View 。

关于ios - 如何从小部件扩展导航到 UIKit viewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63810770/

相关文章:

ios - iOS 7 中的导航栏裁剪背景图像;ClipsToBounds :NO not working

Swift:如何为泛型类定义通配符

ios - json 注释未显示在 mapview 上

ios - NSMutable 字典,我是每次使用它时都初始化还是将它保存并加载到文件中?

ios - 在 NSDictionary 中知道其中一个键值时获取其他键值

swift - 使用 swift 和 parse 添加列

ios - Swift:触发 TableViewCell 以导致另一个 ViewController 中的 UIWebView 中的链接

SwiftUI 使用表单选择器复制导航栏

swift - 为什么核心数据不会在 swiftui 类中加载,但会在结构 View 中加载

ios - 将 WatchKit 扩展代码 (git repo) 与现有 iPhone 代码 (repo) 分开