我目前正在尝试使用 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/