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 № 1Il 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.