在导航中使用视图控制器添加 3D 触摸动态快速操作

Posted

技术标签:

【中文标题】在导航中使用视图控制器添加 3D 触摸动态快速操作【英文标题】:Add 3D touch dynamic quick action with view controller inside navigation 【发布时间】:2016-08-05 17:50:32 【问题描述】:

我想使用以下代码在我的应用中实现 3D 触摸快速操作:

func createQuickActions(application: UIApplication) 
    let shortcut1 = UIMutableApplicationShortcutItem(type: NSBundle.mainBundle().bundleIdentifier!+".CrearActividad", localizedTitle: "Actividad", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(templateImageName: "iphone-3d-touch-checkbox"), userInfo: nil)
    let shortcut2 = UIMutableApplicationShortcutItem(type: NSBundle.mainBundle().bundleIdentifier!+".CrearNota", localizedTitle: "Nota", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(templateImageName: "iphone-3d-touch-notebook"), userInfo: nil)
    let shortcut3 = UIMutableApplicationShortcutItem(type: NSBundle.mainBundle().bundleIdentifier!+".CrearReunion", localizedTitle: "Reunión", localizedSubtitle: nil, icon: UIApplicationShortcutIcon.init(templateImageName: "iphone-3d-touch-calendar"), userInfo: nil)

    application.shortcutItems = [shortcut1,shortcut2,shortcut3]

按下快速操作按钮后,会出现相应的视图控制器,但没有导航栏(在我的故事板上,所有视图控制器都通过导航控制器连接)。 我的导航栏上有重要的按钮,那么如何使用可见的导航栏/导航控制器实例化和推送我的视图控制器?

【问题讨论】:

【参考方案1】:

当应用程序通过 3D touch 打开时,调用 AppDelegate 中的以下方法。

    func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) 

    //Navigate to required viewController after instantiating new navigation controller programatically


希望您在各自的视图控制器中以编程方式添加导航栏按钮。如果是这样,您可以在通过 3D Touch 快速操作访问时查看这些条形按钮。

【讨论】:

感谢您的回答,我使用了该方法,并且在根据所选的快捷方式项选择了要显示的 ViewController 之后,我在那里调用了 window?.rootViewController?.showViewController 方法。

以上是关于在导航中使用视图控制器添加 3D 触摸动态快速操作的主要内容,如果未能解决你的问题,请参考以下文章

3D Touch 快速操作无法快速运行 3

如何在 3D 触摸窥视动作的预览动作中访问呈现视图控制器?

在表格视图导航控制器之前添加快速视图控制器的推荐结构

视图控制器传值

视图控制器中的集合视图,单元格触摸集合视图本身的顶部边框(嵌入在导航控制器中)

未调用位置的 3D 触摸视图控制器