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

Posted

技术标签:

【中文标题】3D Touch 快速操作无法快速运行 3【英文标题】:3D Touch Quick Action Won't work swift 3 【发布时间】:2017-05-02 07:04:22 【问题描述】:

我正在尝试在我的应用中添加 3D 触摸快速操作。我在 navigationContoller 中嵌入了两个 viewContoller。当用户按下 3D 动作时,它应该将它们带到添加事件视图控制器。但是我收到了这个错误

无法将“Morning_Star_2.AddEventsViewController”(0x1000a2260)类型的值转换为“UINavigationController”(0x1a79cd360)。 2017-05-02 02:51:36.220324-0400 晨星 2[3731:895126] 无法将“Morning_Star_2.AddEventsViewController”(0x1000a2260)类型的值转换为“UINavigationController”(0x1a79cd360)。

这是我的代码

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) 
    if shortcutItem.type == "com.krp.addEvent" 
        let sb = UIStoryboard(name: "Main", bundle: nil)
        let addEventVC = sb.instantiateViewController(withIdentifier: "addEventVC") as! UINavigationController
        self.window?.rootViewController?.present(addEventVC, animated: true, completion: nil)
    

我试过改成! UINavigationController 为!添加事件视图控制器。它可以工作,但它不会像正常打开应用程序时那样在我的添加视图控制器的顶部显示导航栏。

Here is my main.storyboard

【问题讨论】:

你能展示你的故事板图片吗? 它就在那里@BhupatBheda。请点击“这是我的 main.storyboard” 【参考方案1】:

您不应该将AddEventsViewController 转换为UINavigationController,因为它不是UINavigationController,只是UIViewController 的子类。但正如我所见,您的rootViewController 是。所以你需要将它转换为UINavigationController,然后推送你的AddEventsViewController,而不是出现,你会看到NavigationBar

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) 
        if shortcutItem.type == "com.krp.addEvent" 
        let sb = UIStoryboard(name: "Main", bundle: nil)
        let addEventVC = sb.instantiateViewController(withIdentifier: "addEventVC") as! AddEventsViewController
        if let navigationController = window?.rootViewController as? UINavigationController 
            navigationController.pushViewController(addEventVC, animated: true)
        
    

【讨论】:

@blueren,是这样的吗?如果是这样,我收到一个错误:self.window?.rootViewController?.push(addEventVC, animated: true, completion: nil) 我不太清楚你的意思。能不能通过代码解释一下?

以上是关于3D Touch 快速操作无法快速运行 3的主要内容,如果未能解决你的问题,请参考以下文章

应用程序首次启动时 3D Touch 快速操作不起作用

从 AppDelegate 添加 3D Touch 快速操作

Swift 3D Touch iOS 10 主屏幕快速操作分享项目丢失

如何在 iOS 应用程序的 UIApplicationShortcutIcons(3D touch) 中添加 4 个以上的快速操作项

iOS开发之3D Touch

3D Touch 快捷方式小工具