gpt4 book ai didi

ios - 如何使用由 Swift 编写的 Xcode 中 TabBarController 管理的 ViewController 处理 iOS 应用程序的静态 QuickActions

转载 作者:行者123 更新时间:2023-11-30 13:22:06 26 4
gpt4 key购买 nike

我已经在 Info.plist 中为在 Xcode 中创建并用 Swift 编写的 iOS 应用程序创建了一些(静态)QuickActions。

我无法让他们打开 ViewController。当然,我已经用谷歌搜索过,但没有任何效果对我有用。如果这很重要:我正在使用由 TabBarController 管理的 ViewController。大多数教程似乎都使用 NavigationController。但是,我认为这将通过segues完成,对吧?我需要什么代码来处理它?<​​/p>

请问有人可以提供吗?或者有人知道简单的手册/教程吗?

问候,大卫。

附注:我尝试了这段代码,但它似乎只适用于 NavigationController?!代码:

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void)
{
self.handleShortcutItem(shortcutItem)
completionHandler(true)
}

func handleShortcutItem(shortcutItem: UIApplicationShortcutItem)
{
switch shortcutItem.type {
case "icons.quickaction.home":
self.presentComposeViewController()
default: break
}
}

func presentComposeViewController()
{
guard let navigationController = window?.rootViewController as? UINavigationController else { return }

let identifier = "MyViewController"
let composeViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier(identifier)

navigationController.pushViewController(composeViewController, animated: false)
}

最佳答案

在@ILikeTau的帮助下终于找到了解决方案.

我使用以下代码通过 QuickAction 打开由 TabBarController 管理的 ViewController:

@available(iOS 9.0, *)
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {

if(shortcutItem.type == "app.quickaction.search"){
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateInitialViewController()
window?.rootViewController = vc
guard let tabBarController = window?.rootViewController as? UITabBarController else { return };
tabBarController.selectedIndex = 2
}
else if(shortcutItem.type == "app.quickaction.home"){
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateInitialViewController()
window?.rootViewController = vc
guard let tabBarController = window?.rootViewController as? UITabBarController else { return };
tabBarController.selectedIndex = 0
}
}

此代码适用于两种模式:应用程序处于后台模式并且应用程序已关闭。我认为这种方式比普通的多功能方式更简单、更短。

关于ios - 如何使用由 Swift 编写的 Xcode 中 TabBarController 管理的 ViewController 处理 iOS 应用程序的静态 QuickActions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37664345/

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