gpt4 book ai didi

ios - 快捷方式项目,快速操作 3D Touch swift

转载 作者:行者123 更新时间:2023-11-28 15:12:08 25 4
gpt4 key购买 nike

出于某种原因,我在确定我的应用程序中的快捷方式项时遇到了一些麻烦。我已经学习了所有教程,我相信我做的一切都是对的;然而,它的行为真的很奇怪。问题是,当您完全关闭该应用程序并在主屏幕上执行 3D Touch 快捷方式项目时,它会将您带到该应用程序的正确部分;但是,当应用程序在后台打开时(就像您只需单击主页按钮一样),它不会将您带到应用程序的正确部分,它只会打开它。这真的很奇怪,我不确定该怎么做,因为我已经按照所有说明进行操作。非常感谢!

代码:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {

if shortcutItem.type == "com.myapp.newMessage" {

let sb = UIStoryboard(name: "Main", bundle: nil)


let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 2 //this takes me to the contacts controller



let root = UIApplication.shared.keyWindow?.rootViewController

root?.present(vc, animated: false, completion: {
completionHandler(true)
})


} else if shortcutItem.type == "com.myapp.groups" {
let sb = UIStoryboard(name: "Main", bundle: nil)


let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 1 //this takes me to the groups controller

let root = UIApplication.shared.keyWindow?.rootViewController

root?.present(vc, animated: false, completion: {
completionHandler(true)
})

} else {
//more short cut items I will add later
}
}

注意:这些是静态快捷方式项,我在 info.plist 文件中配置了它们,所提供的这个功能是应用程序中除了 info.plist 文件之外唯一包含快捷方式项的地方。

编辑:这似乎是 RootViewController 的问题,因为我尝试了多种不同的方法,但它仍然给我相同的警告消息

2017-11-22 22:36:46.473195-0800 QuickChat2.0[3055:1068642] 警告:尝试呈现其 View 不在窗口层次结构中!

我只是想通过这种方式实现我的目标through this post但它给了我与以前完全相同的结果。

最佳答案

您应该在 performActionForShortcutItem 中设置一个变量,告诉您快捷方式类型并将其中的代码移动到 applicationDidBecomeActive 中。你的 jar 应该看起来像这样

var shortcut: String?

func applicationDidBecomeActive(application: UIApplication) {
if let shortcutItem = shortcut {
shortcut = nil
if shortcutItem == "com.myapp.newMessage" {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 2 //this takes me to the contacts controller
let root = UIApplication.shared.keyWindow?.rootViewController
root?.present(vc, animated: false, completion: nil)
} else if shortcutItem == "com.myapp.groups" {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 1 //this takes me to the groups controller
let root = UIApplication.shared.keyWindow?.rootViewController
root?.present(vc, animated: false, completion: nil)
} else {
//more short cut items I will add later
}
}
}

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
shortcut = shortcutItem.type
completionHandler(true)
}

关于ios - 快捷方式项目,快速操作 3D Touch swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47447740/

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