Otrzymaliśmy projekt OGROMNY z outsourcingu, który staramy się "naprawić". W projekcie są setki kontrolerów widoku. Naszym celem jest łatwe określenie, na którą klasę aktualnie patrzymy na urządzeniu.Zapisywanie nazwy klasy wszystkich UIViewControllers w projekcie
Nasze rozwiązanie (które nie działało, stąd pytanie SO).
Zastąpić metodę viewDidAppear z UIViewController poprzez kategorii z tego:
-(void)viewDidAppear:(BOOL)animated
{
NSLog(@"Current View Class: %@", NSStringFromClass(self.class));
[self viewDidAppear:animated];
//Also tried this:
//[super viewDidAppear:animated];
}
Ta kategoria będzie umieścić w .pch projektu.
Nie wymagałoby to dodatkowego kodu, który można umieścić w setkach kontrolerów View i można łatwo włączać i wyłączać. To nie działa, ponieważ, jak nauczyliśmy się teraz, < meme> jeden nie wystarczy zastąpić istniejący sposób poprzez kategorii < /mem>.
Czego nam brakuje?!?
Ten kod ma nieskończoną pętlę, prawda?Powinieneś zadzwonić [super viewDidAppear: animated]; –
@BrunoDomingues, ponieważ jest to kategoria na UIViewController, wywołanie super wywołałoby viewDidAppear na NSObject (nadklasę UIViewController), która nie istnieje. – adamweeks
Można znaleźć bieżący widoczny widok (kontroler widoku) z UIWindow rootViewController. – 9dan