Może to zabrzmieć pytanie początkujących, ale jestem nowy t iOS dev.Zmiana navigationController.delegate powoduje zły dostęp
Mam widok wciśnięty w navigationController, powiedzmy, że jest to trzeci widok. W tym widoku ustawiłem self.navigationController.delegate = self;
. Zmieniono delegata, ponieważ potrzebuję obsługiwać przypadek, gdy użytkownik przechodzi do poprzedniego widoku, tj. Wyskakuje z bieżącego widoku.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([[viewController class] isEqual:[MainViewController class]]) {
...
}
}
To działa OK, ale kiedy ponownie pojawi przycisk bieżącego widoku i przycisk nawigacyjny z powrotem (czyli przejście na pierwszy pchnął zobaczyć) Dostaję błąd dostępu złe.
Czego mi brakuje? Jaki jest właściwy sposób obsługi przycisku wstecznego przycisku nawigacji?
faktycznie ustawienie delegata do zera w dealloc nie pomogło ... W moim przypadku, 3. Widok realizuje UINavigationControllerDelegate się inni nie ? Więc gdzie muszę ustawić delegata na siebie, we wszystkich widokach? – deimus
Jeśli mam cię poprawnie delegować, powinieneś ustawić zero w widoku, gdzie jeśli był ustawiony na siebie za każdym razem, gdy będziesz naciskać lub pop. Przynajmniej tak zrobiłem i wygląda na to, że ... Proszę potwierdzić – deimus
Oczywiście trzeba to ustawić dla każdego kontrolera widoku. Potwierdzać. Powodem, dla którego powinieneś ustawić delegację na zero, jest unikanie "zwisających" wskaźników (wskaźników do zwalnianej pamięci). EXC_BAD_ACCESS zwykle dzieje się, gdy wysyłasz komunikat do dealokowanego obiektu, a ponieważ delegat kontrolera nawigacji był zdekalokowanym obiektem, do którego dostałeś ten błąd. – Eugene