Ich habe mein Gerät gestern auf iOS 11 Beta und meine App mit diesem Code in AppDelegate aktualisiert, um den Schaltflächen-Titel auf allen Bildschirmen zu verbergen:
@implementation UINavigationItem (Customization)
/**
Removes text from all default back buttons so only the arrow or custom image shows up.
*/
-(UIBarButtonItem *)backBarButtonItem
{
return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}
Normalerweise funktioniert die ältere Version, aber wenn ich meine App auf iOS 11 Beta starte, wird der Titel der Zurück-Schaltfläche immer noch angezeigt. Steht jemand vor diesem Problem? Ist es ein Beta-Versionsfehler von iOS oder iOS 11, der eine andere Möglichkeit zum Ausblenden des hinteren Schaltflächentitels benötigt?
Ich habe Ihren Ansatz schon früher verwendet, aber leider funktioniert er nicht mehr. Nachdem ich alle möglichen Lösungen ausprobiert hatte, funktionierte nur ich ohne Probleme und Fehler. Bitte beachten Sie, dass es anscheinend keinen universellen Weg gibt, um dies global für alle UIViewController zu beheben.
Anruf
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:self.navigationItem.backBarButtonItem.style target:nil action:nil];
auf viewWillDisappear
des präsentierenden Controllers.
Anruf
self.title = @"Title"
auf viewWillAppear
des präsentierenden Controllers.
Andere Lösungen, die ich ausprobiert habe, haben verschiedene Probleme, z. Sie funktionieren gut, aber alles bricht, wenn Sie vom linken Rand ein wenig streichen.
Was ich in iOS 11 getan habe, war einfach das UINavigationControllerDelegate
-Protokoll für meine Root-Navigationscontroller zu implementieren und das "leere" UIBarButtonItem als Zurück-Schaltfläche jedes Mal festzulegen, wenn ein neuer Controller angezeigt wird. Hier ist die Swift 4 Version:
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
Verwenden Sie den folgenden Code, um iOS 9 bis 11 zu unterstützen
if #available(iOS 11, *) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted)
} else {
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0,
-60), for:UIBarMetrics.default)
}
Wenn Sie die Farbe des Balkentastentexts auf "Löschen" setzen, ist dies die sauberste Methode, die ich für alle Bildschirme gefunden habe
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted)