从主屏幕使用3D Touch快捷方式时,我试图转换到不同的视图控制器。
该应用嵌入在UITabBarController中,每个选项卡根控制器是UINavigationController。
以下是我尝试处理快捷方式以加载每个快捷方式的视图控制器的方法。
使用此代码时,快捷方式仅打开应用程序到初始视图控制器,而不是在不同选项卡中的
我猜测这是因为我要加载的
如何在
更新:
我不确定以下内容是否有效,因为我现在没有iPhone 6S。但我已将代码更改为以下内容,希望这将在执行3D Touch操作时加载所选的选项卡索引。从那里,它应该向视图控制器发布通知以执行转场。
该应用嵌入在UITabBarController中,每个选项卡根控制器是UINavigationController。
以下是我尝试处理快捷方式以加载每个快捷方式的视图控制器的方法。
private func handleShortcutItem(shortcutItem: UIApplicationShortcutItem) {
if let rootViewController = window?.rootViewController, let shortcutItemType = ShortcutItemType(shortcutItem: shortcutItem) {
let sb = UIStoryboard(name: "main", bundle: nil)
let helloVC = sb.instantiateViewControllerWithIdentifier("HelloVC") as! HelloViewController
let goodbyeVC = sb.instantiateViewControllerWithIdentifier("GoodbyeVC") as! GoodbyeViewController
switch shortcutItemType {
case .Hello:
rootViewController.presentViewController(helloVC, animated: true, completion: nil)
break
case .Goodbye:
rootViewController.presentViewController(goodbyeVC, animated: true, completion: nil)
break
}
}
}
使用此代码时,快捷方式仅打开应用程序到初始视图控制器,而不是在不同选项卡中的
helloVC
和goodbyeVC
控制器中打开。我猜测这是因为我要加载的
ViewControllers
嵌入了一个UINavigationController
以及嵌入了UITabBarController
中。如何在
UITabBarController
和UINavigationController
中嵌入presentViewController
?更新:
我不确定以下内容是否有效,因为我现在没有iPhone 6S。但我已将代码更改为以下内容,希望这将在执行3D Touch操作时加载所选的选项卡索引。从那里,它应该向视图控制器发布通知以执行转场。
private func handleShortcutItem(shortcutItem: UIApplicationShortcutItem) {
if let rootViewController = window?.rootViewController, let shortcutItemType = ShortcutItemType(shortcutItem: shortcutItem) {
let tababarController = rootViewController as! UITabBarController
switch shortcutItemType {
case .Hello:
tababarController.selectedIndex = 1
NSNotificationCenter.defaultCenter().postNotificationName("performsegueHello", object: nil)
break
case .Goodbye:
tababarController.selectedIndex = 4
NSNotificationCenter.defaultCenter().postNotificationName("performsegueGoodbye", object: nil)
break
}
}
}