Я пытаюсь добавить 3D касание Ярлыки к приложению, мне удалось иметь появляются ярлыки при использовании 3DTouch на значке приложения из стола ; однако при использовании ярлыка приложение падает при загрузке, и я не уверен, почему.3D ярлыков сенсорных не будут работать из-за неожиданную аварией
Мне удалось получить приложение для загрузки ярлыков закладок, но оно не инициирует BookmarksViewController
, оно просто загружает InitialViewController
.
Приложение помещено в пределах UITabBarController
и UINavigationController
для каждой вкладки. Оба контроллера просмотра, которые я пытаюсь загрузить, находятся на разных вкладках, но первый вид в стеке контроллера навигации.
Кто-нибудь знает, где я иду не так?
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
Это в StoryboardID для вида контроллеров.
Я сделал то же самое с моим проектом, после проверки кода, единственное различие заключается в том, что я возвращаю false после обращения к ярлыку в методе appDidFinishLaunchWithOption, чтобы предотвратить его выполнение методом itemActionForShortcut. Вы можете попробовать. – Surely
Можете ли вы предоставить трассировку стека для сбоя? –