2009-07-31 12 views

risposta

18

Sì, è possibile.

È possibile controllare come il pulsante indietro di serie sarà quando un altro controller di vista è spinto sulla cima di un dato controller della vista impostando barra posteriore elemento pulsante del suo elemento di navigazione (è possibile personalizzare il titolo o utilizzare un'immagine):

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]; 
self.navigationItem.backBarButtonItem = btn; 
[btn release]; 

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleBordered target:nil action:nil]; 
self.navigationItem.backBarButtonItem = btn; 
[btn release]; 

Nota: si configura questa in un controller di vista "padre" che può avere altri controller della vista (s) spinto su di esso. La configurazione viene eseguita in "parent" e l'aspetto del pulsante Indietro viene modificato quando alcuni controller di visualizzazione sono in primo piano. Toccando il pulsante indietro ti riporti come previsto.


È inoltre possibile creare il proprio UIBarButtonItem e impostarlo come il leftButtonItem sulla barra di navigazione sulla corrente controller della vista:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleBordered target:self action:@selector(yourMethod:)]; 
self.navigationItem.leftBarButtonItem = btn; 
[btn release]; 

Nota: in questo caso, la barra posteriore/sinistra l'elemento del pulsante viene modificato per il controller della vista corrente (quando è in alto). È necessario implementare il metodo yourMethod:. Se vuoi semplicemente che il pulsante torni indietro, devi gestire personalmente il controller di visualizzazione chiamando [self.navigationController popViewControllerAnimated:YES];.

3

Ho trovato che nessuna delle soluzioni in realtà risolto il BACK UIBarButton e ha anche fornito il suo comportamento nascosto se il controller di visualizzazione è root.

-(void)popViewControllerWithAnimation { 
[self.navigationController popViewControllerAnimated:YES]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    if([self.navigationController.viewControllers objectAtIndex:0] != self) 
    { 
     UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 26, 26)]; 
     [backButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal]; 
     [backButton setShowsTouchWhenHighlighted:TRUE]; 
     [backButton addTarget:self action:@selector(popViewControllerWithAnimation) forControlEvents:UIControlEventTouchDown]; 
     UIBarButtonItem *barBackItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
     self.navigationItem.hidesBackButton = TRUE; 
     self.navigationItem.leftBarButtonItem = barBackItem; 
    } 
} 
0

Funziona quasi come un pulsante indietro. Ad eccezione dell'animazione di transizione (dopo che il pulsante è stato toccato e la vista corrente è saltata fuori dalla navigazione a destra).

Il modo giusto è creare una categoria.

@interface UINavigationBar (MyNavigationBar) 
-(void)drawRect:(CGRect)rect; 
@end 

@implementation UINavigationBar (MyNavigationBar) 
-(void)drawRect:(CGRect)rect { 
UIImage *image = [UIImage imageNamed:@"....."]; 
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
Problemi correlati