2010-03-29 7 views
6

Czy można sprawdzić, kiedy przycisk Wstecz jest naciśnięty w stosie UINavigationController? Próbowałem dodać akcję i cel do self.navigationItem.backBarButtonItem bezskutecznie.Jak stwierdzić, kiedy przycisk Wstecz jest naciśnięty w UINavigationControllerStack

Ktoś ma jakieś rozwiązania?

+1

Po zmianie backBarButtonItem, upewnij się, że zmieniasz go na kontrolerze, do którego wracasz/do /, a nie ten, który został właśnie wciśnięty. Możesz także ustawić niestandardowy tytuł lub niestandardowy widok. Jeśli ustawisz niestandardowy obraz, nie będzie on działał. Na koniec możesz skorzystać z sugestii Noah poniżej, ale zostań delegatem samego kontrolera nawigacyjnego i odpowiedz na metodę rodziny didPopViewController: family of methods. –

+1

UINavigationControllerDelegate nie ma metod will/didPopViewController, only will/didShowViewController. – dstnbrkr

Odpowiedz

-1

Jednym ze sposobów, aby dostać się na to byłoby zastąpić viewWillDisappear w UIViewController, który jest widoczny, gdy przycisk jest wciśnięty z powrotem:

- (void)viewWillDisappear:(BOOL)animated { 
    if (self.isMovingFromParentViewController) { 
     // handle back button press 
    } 
} 

Oczywiście nie bezpośrednio z osią prasy na samym przycisku Wstecz ale daje ci to szansę na wykonanie logiki w tym czasie.

+0

To jest pomysł, ale ... 'viewWillDisappear' będzie wywoływany w zbyt wielu przypadkach. To nie jest doskonały sposób! – VietHung

+0

Mogę czegoś brakuje, ale myślę, że sprawdzenie "self.isMovingFromParentViewController" rozwiązuje ten problem. – mon4goos

+0

@ mon4goos the self.isMovingFromParentViewController nie działa – Dejell

0

Można spróbować mój sposób:

napisać w swojej ViewController: metodę

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)]; 
self.navigationItem.leftBarButtonItem = backBt; 

i działanie:

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

Musisz zrobić zdjęcie tylnej przycisku chcesz.

Animacja ukrywania przycisku wstecz, gdy viewController jest puknięty, nie jest tą samą animacją iOS!

P/s: enter image description here Dostałem go z symulatora. Mam nadzieję, że przyda się! :)