Iphone 3D触摸动作不工作(swift 3)

Iphone 3D触摸动作不工作(swift 3),iphone,swift3,xcode8,3dtouch,Iphone,Swift3,Xcode8,3dtouch,所以,我设法把所有东西都连接好了。当按下快捷操作时,我会在控制台中获得正确的打印输出。我该怎么办?我想不出来 这是我在应用程序代理中的代码 var quicklaunch: Bool! var viewName: String? func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completi

所以,我设法把所有东西都连接好了。当按下快捷操作时,我会在控制台中获得正确的打印输出。我该怎么办?我想不出来

这是我在应用程序代理中的代码

    var quicklaunch: Bool!
    var viewName: String?

   func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
    viewName = shortcutItem.type
    quicklaunch = true
    completionHandler(quicklaunch)
}

func applicationDidBecomeActive(application: UIApplication) {
    if quicklaunch == true {
        quicklaunch = false
        if viewName == "Messages" {
            let rootViewController = self.window?.rootViewController
            let popUpController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "FriendsVC")
            rootViewController?.present(popUpController, animated: true, completion: nil)
            print("Worked")
        }
    }  
}

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
    if quicklaunch == false {
        quicklaunch = true
        if viewName == "Messages" {
            let rootViewController = self.window?.rootViewController
            let popUpController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "FriendsVC")
            rootViewController?.present(popUpController, animated: true, completion: nil)
            print("Worked")
        }
    }

}

如何使其弹出到正确的视图控制器?

您可以获取
根视图控制器
,然后以模式显示所需的
视图控制器
(或者如果
根视图控制器
UINavigationController
,则将其推到导航堆栈上)。类似于

let rootViewController = self.window?.rootViewController
let popUpController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "???") as! ???
rootViewController.present(popUpController, animated: true, completion: nil)
用相应的值替换

编辑

在AppDelegate中创建一个名为
quickLaunch
的布尔变量和一个字符串变量
viewName
。然后更新以下两种方法

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
    viewName = shortcutItem.type
    quickLaunch = true
    completionHandler(quickLaunch)
}

func applicationDidBecomeActive(application: UIApplication) {
    if quickLaunch == true {
        quickLaunch = false
        //PRESENT YOUR VIEW MODALLY HERE
    }  
}

不幸的是……这不起作用。它仍然只会打开应用程序可能已经打开的部分。它不做任何其他事情。啊,我的错。请查看更新的答案。您必须使用
present
而不是
show
它仍然不工作。我尝试使用
present
而不是
show
。可能是因为您试图将
UITabBarController
显示为模式弹出窗口。使用
UIViewController
进行尝试。这并不是说用
UIViewController
更改单词
uitabarcontroller
,而是实际使用的控制器是
UIViewController
。另外,控制台上是否打印“已工作”消息?是的,正在打印“已工作”消息,我没有遇到崩溃。我只是尝试使用UIViewController,结果是一样的。应用程序只是在我关闭的地方打开。我注意到,如果我完全关闭应用程序,然后使用快捷方式,它会起作用,但在那之后,它就不起作用了。这可能与用户必须登录我的应用程序有关吗?