簡體   English   中英

由於意外崩潰,3D Touch快捷方式無效

[英]3D Touch shortcuts won't work due to Unexpected Crash

我正在嘗試將3D Touch快捷方式添加到應用程序中,我已經設法在主屏幕上的應用程序圖標上使用3DTouch時顯示快捷方式; 但是當使用快捷方式時,應用程序在加載時崩潰,我不確定為什么。

我已設法讓應用程序加載書簽快捷方式,但它不會啟動BookmarksViewController ,它只是加載InitialViewController

該應用程序嵌入在每個Tab的UITabBarControllerUINavigationController中。 我試圖加載的兩個視圖控制器都在不同的選項卡中,但導航控制器堆棧中的第一個視圖。

有誰知道我哪里出錯了?

info.plist文件

在此輸入圖像描述

App代表

enum ShortcutItemType: String {

case Bookmarks
case Favourites

init?(shortcutItem: UIApplicationShortcutItem) {
    guard let last = shortcutItem.type.componentsSeparatedByString(".").last else { return nil }
    self.init(rawValue: last)
}

var type: String {
    return NSBundle.mainBundle().bundleIdentifier! + ".\(self.rawValue)"
}
}

class AppDelegate: UIResponder, UIApplicationDelegate {

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {  
    if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] as? UIApplicationShortcutItem {
        handleShortcutItem(shortcutItem)
    }

    return true
}

private func handleShortcutItem(shortcutItem: UIApplicationShortcutItem) {

    if let rootViewController = window?.rootViewController, let shortcutItemType = ShortcutItemType(shortcutItem: shortcutItem) {
    let sb = UIStoryboard(name: "main", bundle: nil)

let favouritesVC = sb.instantiateViewControllerWithIdentifier("FavouritesVC") as! FavouritesTableViewController
let bookmarksVC = sb.instantiateViewControllerWithIdentifier("BookmarksVC") as! BookmarksNotesViewController

        switch shortcutItemType {
        case .Bookmarks:
            rootViewController.presentViewController(bookmarksVC, animated: true, completion: nil)
            break
        case .Favourites:
            rootViewController.presentViewController(favouritesVC, animated: true, completion: nil)
            break
        }
    }
}


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

}

故事板ID

這些是View Controllers的StoryboardID。

在此輸入圖像描述 在此輸入圖像描述

我想你忘記了com.appName.Bookmark中的's'

在此輸入圖像描述

或者您需要從書簽中刪除's':

enum ShortcutItemType: String {

case Bookmarks
case Favourites

相反,嘗試使用這樣的快捷方式:

if shortcutItem.type == "com.appName.Bookmark"
@available(iOS 9.0, *)
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
    if shortcutItem.type == "com.appName.Bookmark" {

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM