2009-07-31 16 views

Odpowiedz

18

Tak, można.

można kontrolować sposób standardowy przycisk z powrotem będzie wyglądać, gdy inny kontroler widoku jest popychany na szczycie danego kontrolera widoku przez ustawienie jego elementu nawigacyjnego bar z powrotem element przycisk (można dostosować tytuł lub użyć obrazu):

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

Uwaga: skonfigurować to w „macierzystym” kontrolera widoku, który może mieć inne kontroler (e) pchnął na wierzchu. Konfiguracja odbywa się w "nadrzędnym", a wygląd przycisku wstecz zmienia się, gdy jakiś kontroler widoku jest na górze. Kliknięcie przycisku Wstecz powoduje powrót zgodnie z oczekiwaniami.


Można również tworzyć własne UIBarButtonItem i ustawić go jako leftButtonItem na pasku nawigacyjnym po regulatora prądu Widok:

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

Uwaga: w tym przypadku, z tyłu/lewy pasek element przycisku został zmieniony dla bieżącego kontrolera widoku (gdy jest na górze). Musisz wdrożyć metodę yourMethod:. Jeśli po prostu chcesz, aby przycisk powrócił, musisz poradzić sobie z poppingiem kontrolera widoku, dzwoniąc pod numer [self.navigationController popViewControllerAnimated:YES];.

3

Stwierdziłem, że żadne z rozwiązań faktycznie nie rozwiązało BACK UIBarButton, a także zapewniło jego ukryte zachowanie, jeśli kontrolerem widoku jest 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

To prawie działa jak przycisk Wstecz. Z wyjątkiem animacji przejścia (po dotknięciu przycisku i wyświetleniu bieżącego widoku nawigacja po prawej).

Właściwy sposób polega na utworzeniu kategorii.

@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)]; 
Powiązane problemy