Sto implementando scorciatoie della schermata iniziale utilizzando 3D Touch, e funziona bene, tuttavia il modo in cui attualmente lo faccio significa che quando il collegamento porta l'utente a un controller specifico, la scheda barra e barra di navigazione mancano.Manca la barra di navigazione e la barra di comando quando si presenta il controller di visualizzazione
Questo è il mio codice:
func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
var handled = false
if let shortcutType = ShortcutType.init(rawValue: shortcutItem.type) {
let rootViewController = window!.rootViewController
switch shortcutType {
case .Favourites:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootController = storyboard.instantiateViewControllerWithIdentifier("favourites") as! FavouritesTableViewController
rootController.parkPassed = DataManager.sharedInstance.getParkByName(NSUserDefaults.standardUserDefaults().stringForKey("currentPark")!)
self.window?.rootViewController = rootController
self.window?.makeKeyAndVisible()
handled = true
}
return handled
}
Qualcuno può suggerire che cosa ho bisogno di cambiare il codice?
Questo è il layout di dritta (FavouritesTableViewController è indicato):
EDIT:
Qui è il mio codice aggiornato:
@available(iOS 9.0, *)
func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
var handled = false
if let shortcutType = ShortcutType.init(rawValue: shortcutItem.type) {
switch shortcutType {
case .Favourites:
print("favourites")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootController = storyboard.instantiateViewControllerWithIdentifier("favourites") as! FavouritesViewController
rootController.parkPassed = DataManager.sharedInstance.getParkByName(NSUserDefaults.standardUserDefaults().stringForKey("currentPark")!)
let root = UIApplication.sharedApplication().delegate as! AppDelegate
if let navCont = root.window?.rootViewController?.navigationController {
navCont.presentViewController(rootController, animated: true, completion: nil)
} else {
root.window?.rootViewController?.presentViewController(rootController, animated: true, completion: nil)
}
root.window?.makeKeyAndVisible()
handled = true
}
}
return handled
}
se mancano, allora si sta presentando dalla visualizzazione radice finestra che è quello che stai facendo ora. Devi fare la tua barra di tabb come rootview e quindi presentarla nella tua barra delle schede –
Come faccio? Ho aggiornato la mia domanda con il layout dello storyboard. – user3746428