UINavigationBar Nascondi il testo del pulsante indietro


104

Come posso nascondere il testo del pulsante Indietro da un controller di navigazione UIN? Avrò solo "<" e non "<Indietro"


1
non puoi modificare il testo predefinito, prova invece navigationItem.leftBarButtonItem per impostare il pulsante Indietro personalizzato
BaSha


Vedi la mia risposta di seguito, se desideri una soluzione globale utilizzando un proxy di aspetto.
fl034

Risposte:


107

Nel generatore di interfacce , puoi selezionare l'elemento di navigazione del controller precedente e modificare la Back Buttonstringa come desideri che appaia il pulsante Indietro. Se lo vuoi vuoto, ad esempio, metti uno spazio.

Puoi anche modificarlo con questa riga di codice:

[self.navigationItem.backBarButtonItem setTitle:@"Title here"];

O in Swift :

self.navigationItem.backBarButtonItem?.title = ""


2
Suggerimento fantastico, quello sull'impostazione di uno spazio vuoto nel generatore di interfacce ... :-D
Felipe Ferri

9
Il costruttore di interfacce e le rotte programmatiche di Swift non funzionavano per me in XCode 8.3.2, Swift 3
agrippa

Puoi dare un'occhiata alla mia soluzione molto semplice per nascondere tutti i pulsanti indietro attraverso l'app. PS: richiede zero righe di codice personali
Pratik Jamariya,

2
Se Back Buttonè già vuoto in IB, aggiungi uno spazio per ottenere il passaggio Backe mostra solo la freccia.
Tejas K

3
Questo metodo attualmente funziona solo nel generatore di interfacce. L'impostazione di questo dal codice non funziona, invece di impostare solo il titolo è necessario impostare l'intero backBarButtonItem in questo modo: navigationItem.backBarButtonItem = UIBarButtonItem (title: "", style: .plain, target: nil, action: nil)
Leszek Szary

81

Puoi anche farlo attraverso lo storyboard. Nell'ispettore degli attributi dell'elemento di navigazione del controller precedente era possibile impostare "" nel campo del pulsante Indietro. Fare riferimento all'immagine di seguito. Sostituisci "Il tuo titolo qui" con "". In questo modo otterrai il risultato desiderato. Non hai più bisogno di scherzare con il "Titolo".

A livello di codice potresti usare

[self.navigationItem.backBarButtonItem setTitle:@" "];

dove self si riferisce al controller che spinge il controller di visualizzazione desiderato.

Elemento di navigazione del controller di visualizzazione Xcode

Esempio prima, dopo la barra di navigazione

Prima Prima

Dopo Dopo


7
Funziona perfettamente se è ambientato negli storyboard. Assicurati solo che la barra di navigazione contenga un elemento di navigazione in modo che possa essere impostato.

11
In iOS 9 / Xcode 7.3, l'impostazione a livello di backBarButtonItemcodice non funziona, ma l'impostazione tramite lo storyboard sì.
Scott Gardner

@ScottGardner, l'impostazione a livello di backBarButtonItemprogrammazione funziona per me in iOS 9.
Suragch

Se non hai la barra di navigazione nello schermo, forse perché deve essere nascosta, puoi aggiungere l'elemento di navigazione nello storyboard, al controller di visualizzazione precedente e impostare il suo pulsante Indietro su "".
Martin Berger

La soluzione ha funzionato alla grande e molto facile da implementare in Xcode 9.2 / iOS 11.
Ray Hunter

79

Puoi implementare in UINavigationControllerDelegatequesto modo:

Vecchio Swift

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    let item = UIBarButtonItem(title: " ", style: .Plain, target: nil, action: nil)
    viewController.navigationItem.backBarButtonItem = item
}

Swift 4.x

class MyNavigationController: UINavigationController, UINavigationControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        let item = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
        viewController.navigationItem.backBarButtonItem = item
    }
}

backBarButtonItemè l' nilimpostazione predefinita e influisce sul controller successivo, quindi è sufficiente impostarlo per tutti i controller


6
Grazie! Questa è l'unica soluzione che ha funzionato (senza rovinare nient'altro) dopo aver esaminato 4 domande duplicate e dozzine di risposte.
inket

1
Avevo già una sottoclasse del controller di navigazione che ho trasformato nel suo delegato che ha funzionato perfettamente. Dovrebbe comunque essere aggiornato per Swift 3.
Dean Kelly

Ottima soluzione grazie, l'unica che ha funzionato in modo coerente per me.
Elliott Davies

Wok come un incantesimo.
tounaobun

48

L'impostazione del titolo del pulsante Indietro su @""o nilnon funzionerà. È necessario impostare l'intero pulsante vuoto (senza titolo o immagine):

Obiettivo-C

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]];

Swift

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

Questo dovrebbe essere fatto sul controller della vista che si trova in cima al controller della vista nello stack di navigazione (cioè da dove navighi al tuo VC tramite il pushViewControllermetodo)


2
grazie, funziona! In swift: self.navigationItem.backBarButtonItem = UIBarButtonItem (titolo: "", stile: .Plain, target: nil, action: nil)
mostworld77

ottima risposta .. fa notare correttamente che la semplice modifica del titolo del backBarButtonItem predefinito non sarà sufficiente. Punti bonus per aver menzionato che backBarButtonItem dovrebbe essere impostato nel controller di visualizzazione precedente.
Crazed'n'Dazed il

30

Un'altra soluzione a questo problema per le situazioni in cui si dispone di una grande quantità di controller di visualizzazione è utilizzare un UIAppearanceproxy per nascondere efficacemente il testo del titolo del pulsante Indietro in questo modo:

UIBarButtonItem *navBarButtonAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

[navBarButtonAppearance setTitleTextAttributes:@{
    NSFontAttributeName:            [UIFont systemFontOfSize:0.1],
    NSForegroundColorAttributeName: [UIColor clearColor] }
                                      forState:UIControlStateNormal];

Questa soluzione renderà il testo come un piccolo punto chiaro, simile all'impostazione manuale del titolo del pulsante Indietro @" ", tranne per il fatto che influisce su tutti i pulsanti della barra di navigazione.

Non lo suggerisco come soluzione generale al problema perché influisce su tutti i pulsanti della barra di navigazione. Capovolge il paradigma in modo che tu scelga quando mostrare i titoli dei pulsanti, piuttosto che quando nasconderli .

Per scegliere quando mostrare i titoli, ripristinare manualmente gli attributi del testo del titolo secondo necessità o creare una sottoclasse specializzata UIBarButtonItemche faccia lo stesso (potenzialmente con un altro UIAppearanceproxy).

Se hai un'app in cui la maggior parte dei titoli dei pulsanti Indietro deve essere nascosta e solo pochi (o nessuno) dei pulsanti di navigazione sono pulsanti di sistema con titoli, questo potrebbe essere per te!

(Nota: la modifica della dimensione del carattere è necessaria anche se il colore del testo è chiaro per garantire che i titoli lunghi non causino lo spostamento del titolo della barra di navigazione centrale)


Era la soluzione più semplice per la mia implementazione. Grazie.
Trevor Panhorst

3
Questo non copre anche gli elementi del pulsante della barra sinistra che non sono pulsanti Indietro?
kevinl

1
Sì, l'ho notato. "influisce su tutti i pulsanti della barra di navigazione"
Adam Kaplan

2
non dovrebbe influenzare tutti gli altri pulsanti nelle barre di navigazione, inclusi gli elementi dei pulsanti della barra sinistra / destra?
Fyodor Volchyok

Sì, non ha specificato un requisito più completo.
Adam Kaplan

30

Aggiungi il codice seguente in viewDidLoad o loadView

self.navigationController.navigationBar.topItem.title = @"";  

L'ho provato su iPhone e iPad con iOS 9


20
Questo non ha cancellato il titolo del controller di visualizzazione precedente?
CalZone

6
Non utilizzare perché rimuoverà l'ultimo titolo dello schermo
evya

Se devi farlo dal controller di visualizzazione corrente, per evitare di rimuovere il titolo dal vc precedente dovresti piuttosto fare: navigationController? .NavigationBar.topItem? .BackBarButtonItem = UIBarButtonItem (title: "", style: .plain, target: nil, azione: zero)
Leszek Szary

15

Puoi aggiungere questa categoria Objective-C per fare in modo che tutti i pulsanti "Indietro" creati da un controller di navigazione non abbiano testo. L'ho appena aggiunto al mio file AppDelegate.m.

@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];
}

@end

PS - (non so come far funzionare questa estensione con Swift, presentava strani errori. Le modifiche sono benvenute per aggiungere una versione Swift)


Questo dà il titolo "Indietro" non nasconde il titolo
Raj Aggrawal

Davvero, come overridefarlo in fretta. Domanda molto interessante
Andrey Gagan

@teradyl è la migliore risposta.
aks.knit1108

@Andrey Gagan, guarda la mia risposta
Abirami Bala

Funziona su iOS 9.0 - 10.3.3, ma su iOS 11+ non funziona.
Sihad Begovic

14

Ho provato alcuni sopra e sotto ma non hanno funzionato. Questo ha funzionato per me:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.topItem?.title = ""
}

1
Se devi farlo dal controller di visualizzazione corrente, per evitare di rimuovere il titolo dal vc precedente dovresti piuttosto fare: navigationController? .NavigationBar.topItem? .BackBarButtonItem = UIBarButtonItem (title: "", style: .plain, target: nil, azione: zero)
Leszek Szary

11

L'unica cosa che funziona senza effetti collaterali è creare un pulsante Indietro personalizzato. Finché non fornisci un'azione personalizzata, anche il gesto di scorrimento funziona.

extension UIViewController {
func setupBackButton() {
    let customBackButton = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
    navigationItem.backBarButtonItem = customBackButton
}}

Sfortunatamente, se vuoi che tutti i pulsanti Indietro in non abbiano alcun titolo, devi impostare questo pulsante Indietro personalizzato in tutti i tuoi controller di visualizzazione: /

override func viewDidLoad() {
    super.viewDidLoad()

    setupBackButton()
}

È molto importante impostare uno spazio bianco come titolo e non una stringa vuota.


9

per rimuovere il testo dal pulsante Indietro in modo programmatico, usato sotto il codice funzionerà da xcode7 e sopra.

self.navigationController.navigationBar.topItem.title = @ "";

o

manualNegli storyboard, seleziona la barra di navigazione sul controller della vista e inserisci "" nel testo del pulsante Indietro.

questo funzionerà. Grazie


2
Questo rimuoverà anche il titolo di navigationItem
Ilker Baltaci

Ho modificato la tua risposta a questo: self.navigationController?.navigationBar.topItem?.title = " "in Xcode 9 e ho funzionato!
MHSFisher

Se devi farlo dal controller di visualizzazione corrente, per evitare di rimuovere il titolo dal vc precedente dovresti piuttosto fare: navigationController? .NavigationBar.topItem? .BackBarButtonItem = UIBarButtonItem (title: "", style: .plain, target: nil, azione: zero)
Leszek Szary

8

La risposta attuale non funzionava. Volevo rimuovere completamente il titolo , ma il testo "indietro" non sarebbe scomparso.

Torna al controller di visualizzazione precedente e imposta la sua proprietà del titolo:

self.title = @" ";

Funziona SOLO quando il controller di visualizzazione precedente non ha un titolo


@ZevEisenberg si assicura che la proprietà sia impostata prima di essere visualizzata nel ciclo di vita del controller di visualizzazione. Significato impostarlo nei metodi viewDidLoad o viewWillAppear.
ChrisHaze

1
inoltre, assicurati di includere uno spazio tra le virgolette.
ChrisHaze

1
In realtà ha finito per funzionare per me senza spazi; solo il buon vecchio stringa vuota: @"".
Zev Eisenberg

1
@ ZevEisenberg, Quando ho escogitato per la prima volta la soluzione era prima in Xcode 5. Con uno spazio era l'unico modo in cui funzionava, motivo per cui l'ho incluso nel codice di esempio. L'aggiornamento Xcode 6 deve averlo incluso. Buono a sapersi - grazie
ChrisHaze

Ho anche usato il mio approccio, che funziona ancora, e in realtà ho rimosso anche la freccia indietro standard.
ChrisHaze

5

Modo alternativo: usa la classe NavigationBar personalizzata.

class NavigationBar: UINavigationBar {

    var hideBackItem = true
    private let emptyTitle = ""

    override func layoutSubviews() {
        if let `topItem` = topItem,
            topItem.backBarButtonItem?.title != emptyTitle,
            hideBackItem {
            topItem.backBarButtonItem = UIBarButtonItem(title: emptyTitle, style: .plain, target: nil, action: nil)
        }

        super.layoutSubviews()
    }

}

Cioè, questo rimuove i titoli di coda dell'intero progetto. Basta impostare la classe personalizzata per UINavigationController.


4

Impostare il titolo del VC precedente su "" stringa con spazio. e il titolo con il pulsante Indietro verrà sostituito con una singola stringa di spazio.

Self.title = " "

Su Indietro premere di nuovo per ripristinare il titolo a quello originale nella viewWillAppear.


4

Usa un costume NavigationControllerche prevalepushViewController

class NavigationController: UINavigationController {  
  override func pushViewController(_ viewController: UIViewController, animated: Bool) {
    viewController.navigationItem.backBarButtonItem =
      UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
    super.pushViewController(viewController, animated: animated)
  }
}

4

Molte risposte già, ecco i miei due centesimi sull'argomento. Ho trovato questo approccio davvero robusto. Devi solo metterlo in viewController prima di segue.

Swift 4:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}

2
Sì! Grazie :)
Hews

3

Ho provato di tutto in questo post. L'unica soluzione funzionante è @ VoidLess's

Ecco la stessa risposta ma più completa

class CustomNavigationController: UINavigationController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.delegate = self
    }
}


// MARK:UINavigationControllerDelegate
extension CustomNavigationController {
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
    }
}

3

Questa è la mia risoluzione per iOS11, cambio l'aspetto di UIBarButtonItem in applicationDidFinishLaunchingWithOptions:

UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(-100, 0), for:UIBarMetrics.default)

Non è possibile modificare l'offset Y, perché cambierà anche la posizione del pulsante della barra posteriore in iOS11, ma va bene in iOS10 e versioni precedenti.


1
Funziona ma durante l'animazione puoi vedere il titolo precedente spostarsi a sinistra. Sembra un po 'buggato.
Jonathan

2

In Swift3,

Se imposti l'impostazione globale

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // ..

    let BarButtonItemAppearance = UIBarButtonItem.appearance()
    BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)
    BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted)


    // ...

}

1
Nota che questo cambierà anche il colore in trasparente per tutti gli altri pulsanti della barra che potresti avere da qualche parte nella tua app, non solo i pulsanti Indietro.
Leszek Szary

2

Swift 3.1 Puoi farlo implementando il metodo delegato di UINavigationController.

func navigationController(_ navigationController: UINavigationController, 
                          willShow viewController: UIViewController, animated: Bool) {

    /** It'll hide the Title with back button only,
     ** we'll still get the back arrow image and default functionality.
     */
    let item = UIBarButtonItem(title: " ", style: .plain, target: nil, 
                               action: nil)
    viewController.navigationItem.backBarButtonItem = item
}

La migliore risposta!
evya

2

Per coloro che vogliono nascondere il titolo del pulsante Indietro a livello globale.

È possibile swizzle viewDidLoaddi UIViewControllercome questo.

+ (void)overrideBackButtonTitle {

    NSError *error;

    // I use `Aspects` for easier swizzling.

    [UIViewController aspect_hookSelector:@selector(viewDidLoad)
                              withOptions:AspectPositionBefore
                               usingBlock:^(id<AspectInfo> aspectInfo)
    {

        UIViewController *vc = (UIViewController *)aspectInfo.instance;

        // Check whether this class is my app's view controller or not.
        // We don't want to override this for Apple's view controllers,
        // or view controllers from external framework.

        NSString *className = NSStringFromClass([vc class]);
        Class class = [NSBundle.mainBundle classNamed:className];
        if (!class) {
           return;
        }

        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
        vc.navigationItem.backBarButtonItem = backButton;

    } error:&error];

    if (error) {
        NSLog(@"%s error: %@", __FUNCTION__, error.localizedDescription);
    }

}

Utilizzo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[self class] overrideBackButtonTitle];
    return YES;
}

2

Se stai prendendo di mira iOS 13 e versioni successive, puoi utilizzare questa nuova API per nascondere il titolo del pulsante Indietro a livello globale .

let backButtonAppearance = UIBarButtonItemAppearance()
backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]

UINavigationBar.appearance().standardAppearance.backButtonAppearance = backButtonAppearance
UINavigationBar.appearance().compactAppearance.backButtonAppearance = backButtonAppearance
UINavigationBar.appearance().scrollEdgeAppearance.backButtonAppearance = backButtonAppearance

1
Questo non è ottimale. Se un utente tocca l'etichetta con il testo in chiaro, viene comunque attivata l'azione di ritorno.
dvdblk

1

Stavo lottando con questo perché avevo un controller di navigazione personalizzato. Sono stato in grado di rimuovere il testo dell'elemento posteriore in tutti i controller di visualizzazione con questo codice nella mia classe controller di navigazione personalizzata override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }

Ciò rimuove tutti i titoli degli elementi precedenti utilizzando questo controller di navigazione personalizzato.


1
Aggiornamento per questo: funziona ma c'è uno strano ritardo nel caricamento che mi dà fastidio. Ora ho aggiunto questo 'let BarButtonItemAppearance = UIBarButtonItem.appearance () BarButtonItemAppearance.setTitleTextAttributes ([NSAttributedStringKey.foregroundColor: UIColor.clear], per: .normal)' nel delegato App didLaunchWithOptions!, E funziona perfettamente!
Amy.R

0

In iOS 11, abbiamo riscontrato che l'impostazione UIBarButtonItemdel carattere / colore del testo dell'aspetto su un valore molto piccolo o un colore chiaro comporterà la scomparsa di altri elementi della barra (il sistema non rispetta più la classe dell'elemento UIBarButton, lo convertirà in a _UIModernBarButton). Inoltre, impostando l'offset del testo a ritroso su offscreen il risultato lampeggerà durante la visualizzazione interattiva.

Quindi abbiamo cambiato addSubView:

+ (void)load {
    if (@available(iOS 11, *)) {
        [NSClassFromString(@"_UIBackButtonContainerView")     jr_swizzleMethod:@selector(addSubview:) withMethod:@selector(MyiOS11BackButtonNoTextTrick_addSubview:) error:nil];
    }
}

- (void)MyiOS11BackButtonNoTextTrick_addSubview:(UIView *)view {
    view.alpha = 0;
    if ([view isKindOfClass:[UIButton class]]) {
        UIButton *button = (id)view;
        [button setTitle:@" " forState:UIControlStateNormal];
    }
    [self MyiOS11BackButtonNoTextTrick_addSubview:view];
}

0
-(void)setNavigationItems{
     UIBarButtonItem *leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"**Your title here**" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonClicked)];   
     self.navigationController.navigationBar.topItem.backBarButtonItem=leftBarButtonItem;
}
-(void)backButtonClicked{
    [self.navigationController popViewControllerAnimated:YES];
}

0

Il testo posteriore proviene dall'ultimo controller di visualizzazione navigationItem.title, ed navigationItem.titleè impostato automaticamente da self.title. Il modo più semplice per risolvere il problema è il gancio setTitle:, assicuratinavigationItem.title = @""

Metti questo codice a AppDelegate.mvolontà lo farà ok。

    [UIViewController aspect_hookSelector:@selector(setTitle:)
                              withOptions:AspectPositionAfter
                               usingBlock:^(id<AspectInfo> aspectInfo, NSString *title) {
        UIViewController *vc = aspectInfo.instance;
        vc.navigationItem.titleView = ({
            UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
            titleLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
            titleLabel.text = title;
            titleLabel;
        });
        vc.navigationItem.title = @"";
    } error:NULL];

Maggiori dettagli su https://www.jianshu.com/p/071bc50f1475(Simple Chinease)


0

La mia soluzione: - XCode: 10.2.1 - Swift: 5

  • Controllo visualizzazione genitore:
    • self.title = ""
  • Child viewcontroller:
    • self.navigationItem.title = "Il tuo titolo" // per impostare il titolo per il viewcontroller

0

XCode 11.5 Swift 5

Un modo molto semplice, anche se forse un po 'hacky, di farlo a livello di codice se non hai bisogno del pulsante Indietro personalizzato è impostare la dimensione del carattere uguale a zero nel controller della vista che stai inserendo nello stack, chiamando qualcosa di simile da viewDidLoad

private func setupNavBar() {
    let appearance = UINavigationBarAppearance()
    appearance.configureWithDefaultBackground()
    
    let backButtonAppearance = UIBarButtonItemAppearance()
    backButtonAppearance.normal.titleTextAttributes = [.font: UIFont(name: "Arial", size: 0)!]
    appearance.backButtonAppearance = backButtonAppearance

    navigationItem.standardAppearance = appearance
    navigationItem.scrollEdgeAppearance = appearance
    navigationItem.compactAppearance = appearance
}

-1

Finalmente ho trovato la soluzione perfetta per nascondere il testo predefinito in tutta l'app.

Basta aggiungere un'immagine trasparente e aggiungere il seguente codice nel tuo AppDelegate.

UIBarButtonItem.appearance().setBackButtonBackgroundImage(#imageLiteral(resourceName: "transparent"), for: .normal, barMetrics: .default)

-2

Il seguente metodo funziona su iOS 11 ed è sicuro che non si blocca su altre versioni di iOS. In questo modo la tua app potrebbe essere rifiutata nella revisione dell'App Store poiché sia ​​UIModernBarButton che UIBackButtonContainerView sono API private. Posiziona in AppDelegate.

    if
        let UIModernBarButton = NSClassFromString("_UIModernBarButton") as? UIButton.Type,
        let UIBackButtonContainerView = NSClassFromString("_UIBackButtonContainerView") as? UIView.Type {

        let backButton = UIModernBarButton.appearance(whenContainedInInstancesOf: [UIBackButtonContainerView.self])
        backButton.setTitleColor(.clear, for: .normal)
    }

In questo modo la tua app potrebbe essere rifiutata nella revisione dell'App Store poiché sia ​​UIModernBarButton che UIBackButtonContainerView sono API private.
Groot

Grazie @ Groot, ha aggiunto il tuo avviso.
Patrick

-5

Versione Swift, funziona perfettamente a livello globale:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal)
        UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted)

        return true
    }

7
Dovresti aggiungere che questo nasconderà tutto il testo anche rightBarButtons e leftBarButtons, che non tornano indietro.
limfinity

questo non è un file solution. Come indicato da @limfinity, lo cambierà universalmente per tutti gli UIBarButtonItem in tutta l'app
Danut Pralea

sono d'accordo con @limfinity e Danut Pralea, nasconderà tutto il testo di UIBarButtonItem in tutta l'app
Pratik Jamariya
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.