/ / Sottoclasse UINavigationController con pulsante back personalizzato - iphone, obiettivo-c, ios, controller di interfaccia utente, uinavigationbar

Sottoclasse UINavigationController con pulsante back personalizzato - iphone, obiettivo-c, ios, controller di interfaccia utente, barra di navigazione

So che posso impostare il pulsante back personalizzato dal controller di visualizzazione stesso, qualcosa del tipo:

- (void)setBackButton
{
UINavigationBar* navBar = self.navigationController.navigationBar;
UIButton* backButton = [navBar backButtonWith:[UIImage imageNamed:@"navigationBarBackButton.png"]
highlight:nil
leftCapWidth:14.0];

[backButton addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
}

- (void)backButtonTapped:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}

Il problema è che ho bisogno di farlo per tutti i miei controller di visualizzazione ...
Una soluzione è inserire questo codice in alcuni BasicViewController e tutti i miei controller di vista lo sottoclassi.

Ma la mia domanda è: posso creare una sottoclasse di UINavigationCotroller e impostare il pulsante sinistro della barra nab su questo pulsante personalizzato?

risposte:

2 per risposta № 1

Il modo giusto per farlo è usare UIAppearance

Fornisce metodi su UIBarButtonItem ad esempio

- (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics

e

- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics


1 per risposta № 2

No. Sarebbe meglio avere un UIViewController personalizzato che gestisca questo comportamento.