2013-01-10 11 views

Odpowiedz

20

Lub możesz użyć metod pełnomocnika UINavigationController. Metoda willShowViewController jest wywoływana po naciśnięciu przycisku Wstecz przycisku VC.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 
+0

fantastyczne @satheeshwaran, dokładnie to, co chcę ... –

+1

Również to, co chciałem. :-) Dla rekordu, musisz zaimplementować protokół na kontrolerze widoku, do którego nawigujesz. – doekman

+0

To rozwiązanie działa świetnie i jest najbardziej wydajne. Upewnij się, że połączenie z delegatem nawigacjaController jest w - (void) viewDidAppear: (BOOL) animowane, w przeciwnym razie alert pojawia się również, gdy pierwszy viewcontroller uruchamia się po raz pierwszy. –

-1

utworzyć przycisk i dać działanie przycisku w następujący sposób.

[self alert]; 

a gdy zostanie wyświetlony alert, po dotknięciu przez tak

[self.navigationController popViewController]; 

Po tym,

self.navigationController.LeftBarButton = myButton; 

to może pomóc

+0

Do czego służy alert? – richy

+1

@richy dzięki za komentowanie odpowiedzi na to pytanie. Alert służy do wyświetlania alertu, o który pytano w pytaniu. –

2

Stwórz własną UIBarButtonItem i ustawić go jako w metoda z .

Na przykład (tutaj użyłem elementu systemowego, ale możesz również utworzyć inny, zobacz informacje o klasie dla szczegółów).

UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAlertView:)]; 
self.navigationItem.leftBarButtonItem = leftBarButtonItem; 

// only if you don't use ARC 
// [leftBarButtonItem release]; 

gdzie

- (void)showAlertView:(id)sender 
{ 
    // alert view here... 
} 
8

Pierwszy ukryć przycisk wstecz za pomocą

self.navigationItem.hidesBackButton = YES; 

a następnie utworzyć własny niestandardowy przycisk:

UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)]; 
self.navigationItem.leftBarButtonItem=backBtn; 
[backBtn release]; 

a selektor jest tutaj:

+0

K guys dzięki, to jest druga opcja, czy istnieje sposób, aby wykryć działanie przycisku Wstecz UINavigationController ..? –

+0

Co z 'b'? Napraw to proszę. –

+0

@HarishSaran Co masz na myśli? Czy chcesz wrócić, gdy klikniesz w widok alertu? –

7

najlepszy i najprostszy sposób

Spróbuj umieścić to w kontrolerze widoku, gdzie chcesz, aby wykryć Prasa:

-(void) viewWillDisappear:(BOOL)animated { 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
     // back button was pressed. We know this is true because self is no longer 
     // in the navigation stack. 
    } 
    [super viewWillDisappear:animated]; 
} 
0

viewControllerCount - to var która posiada numer viewControllers wcześniej był w UINavigationController. Następnie sprawdzamy, czy viewControllerCount> [viewControllers count] jeśli tak, wiemy, że wrócimy (tj. Imitacja przycisku Wstecz).

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated 
{ 
    NSArray *viewControllers = [navigationController viewControllers]; 

    if (viewControllerCount > [viewControllers count]) 
    { 
     // your code 
    } 

    viewControllerCount = [viewControllers count]; 
} 
Powiązane problemy