gpt4 book ai didi

swift - 如何使用主页快速操作打开特定 View

转载 作者:行者123 更新时间:2023-12-03 23:09:24 29 4
gpt4 key购买 nike

我是 Swift 新手,一直在使用 SwiftUI,而不是 Storyboard。

我在 Info.plist 中设置了 UIApplicationShortcutItems,并有两个快速操作能够通过 launchOptions 显示警报。

我可以在 SceneDelegate.swift 中切换快速操作

func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
switch shortcutItem.type {
case "QuickAction1":
OneView() // What do I do to open this SwiftUI struct View?
break
case "QuickAction2":
SecondView() // What do I do to open this SwiftUI struct View?
break
default:
break
}
}

使用 SwiftUI 从家庭快速操作打开特定 View 的正确方法是什么?

内容 View .swift
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: OneView())
NavigationLink(destination: TwoView())
}
}
}
}

最佳答案

这是可能的分步方法(使用 Xcode 11.2/iOS 13.2 测试)

1) 添加AppSettings存储由快捷方式呈现的 View 模式的类

class AppSettings: ObservableObject {
enum Mode {
case one
case two
}
@Published var mode: Mode? = nil
}

2) 制作 appSettings场景代表成员访问它并在 ContentView并在快捷方式委托(delegate)中传递 ContentView作为环境对象
let appSettings = AppSettings()

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

let contentView = ContentView().environmentObject(appSettings)
// ...

3)在快捷场景委托(delegate)中激活相应模式
func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
switch shortcutItem.type {
case "QuickAction1":
appSettings.mode = .one
break
case "QuickAction2":
appSettings.mode = .two
break
default:
break
}
}

4) 制作 ContentView根据选择的快捷方式有条件地显示链接
struct ContentView: View {
@EnvironmentObject var appSettings: AppSettings

var body: some View {
NavigationView {
VStack {
NavigationLink(destination: OneView(),
tag: AppSettings.Mode.one,
selection: $appSettings.mode)
{ Text("To One") }
NavigationLink(destination: TwoView(),
tag: AppSettings.Mode.two,
selection: $appSettings.mode)
{ Text("To Two") }
}
}
}
}

关于swift - 如何使用主页快速操作打开特定 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677445/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com