Ich bin aus irgendeinem Grund einige Probleme herauszufinden, die Verknüpfung in meiner App. Ich habe alle Tutorials verfolgt und glaube, dass ich alles richtig gemacht habe; es verhält sich jedoch wirklich komisch. Das Problem ist, dass, wenn Sie diese App vollständig schließen und den 3D-Touch-Shortcut-Eintrag auf dem Startbildschirm ausführen, Sie zum korrekten Teil der App gelangen, wie es sollte; Wenn die App jedoch im Hintergrund geöffnet ist (so wie Sie einfach auf die Home-Schaltfläche klicken), gelangen Sie nicht zum richtigen Teil der App, sondern öffnen sie einfach. Das ist wirklich merkwürdig und ich bin mir nicht sicher, was ich tun soll, weil ich alle Anweisungen befolgt habe. Ich danke dir sehr!Shortcuts Elemente, schnelle Aktionen 3D Touch swift
Code:
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
if shortcutItem.type == "com.myapp.newMessage" {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 2 //this takes me to the contacts controller
let root = UIApplication.shared.keyWindow?.rootViewController
root?.present(vc, animated: false, completion: {
completionHandler(true)
})
} else if shortcutItem.type == "com.myapp.groups" {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "RecentVC") as! UITabBarController
vc.selectedIndex = 1 //this takes me to the groups controller
let root = UIApplication.shared.keyWindow?.rootViewController
root?.present(vc, animated: false, completion: {
completionHandler(true)
})
} else {
//more short cut items I will add later
}
}
Hinweis: Dies sind statische Shortcut Artikel, und ich konfigurierte sie in der Datei info.plist, Diese Funktion, die vorgestellt wurde der einzige Ort in der App neben der info.plist Datei die etwas über die Shortcuts haben.
EDIT: Dies scheint ein Problem mit der RootViewController, weil ich mehrere verschiedene Wege, dies zu tun versucht haben, und es gibt mir immer noch die gleiche Warnmeldung
2017.11.22 22: 36: 46.473195- 0800 QuickChat2.0 [3055: 1068642] Warnung: Versuch zu präsentieren, wessen Sicht nicht in der Fensterhierarchie ist!
Ich habe gerade versucht, meine Ziele auf diese Weise through this post zu erreichen, aber es gibt mir die gleichen Ergebnisse wie zuvor.
Haben Sie überprüft, ob "root" ist nil (unter den Umständen, wo nichts passiert)? Wenn es nicht Null ist, haben Sie versucht, eine verzögerte Leistung hinzuzufügen, um zu sehen, ob das hilft? – matt
Wie finde ich heraus, ob es null ist? – Jaqueline
Verwenden Sie den Debugger, Protokollierung einfügen, was auch immer. Es gibt keine Notwendigkeit für das Raten in der Programmierung; Sie können sehen, was Ihre Variablen bei jedem Schritt sind. – matt