2017-10-24 2 views
0

self.navigationItem.backBarButtonItem!.title verursacht fatale Fehler: unerwartet gefunden null, während einen optionalen Wertes Abwickeln während deutlich in es in meinen Ansicht-Controller gibt es eine Zurück-Taste mit dem Titel StringWie navigiere ich zurück Taste Titel?

Wie bekomme ich die Titel-String-Zurück-Taste?

Antwort

1

Wenn Sie self.navigationItem.backBarButtonItem Referenz sollten Sie sich bewusst sein, dass dies das Bar-Taste Element, das in der Navigationsleiste verwendet wird, wenn self nicht die topViewController sind, sondern unmittelbar unter den topViewController. Das ist self.navigationItem.backBarButtonItem ist nicht die Schaltfläche derzeit sichtbar, wenn self die topViewController ist, aber wenn eine andere Ansicht Controller darüber geschoben wird.

Sie sollten sich auch bewusst sein:

When this property is nil, the navigation item uses the value in its title property to create an appropriate back button.

Was bedeutet, dass self.navigationItem.backBarButtonItemnil sein können und haben noch einen Titel. Siehe here

Wenn Sie wissen möchten, welcher Text mit der Zurück-Taste verwendet wird, könnte Sie etwas sagen konnte, wie:

extension UINavigationController { 
    var backButtonText: String? { 
     guard let self.viewControllers.count > 1 else { return nil } 
     let viewController = self.viewControllers[self.viewControllers.count - 2] 
     return viewController.navigationItem.backBarButtonItem?.title ?? viewController.title 
    } 
} 

, die wie genannt werden könnte:

print(self.navigationController?.backButtonText ?? "No back button title") 
+0

ist es auch möglich, Jetzt zugreifen, um auf die Schaltfläche für die benutzerdefinierte Schaltfläche für den oberen Controller zuzugreifen? –

Verwandte Themen