12 Stimmen

Protokollierung der Klassennamen aller UIViewController in einem Projekt

Wir haben eine RIESIG Projekt aus dem Outsourcing, das wir zu "reparieren" versuchen. Es gibt Hunderte von View Controllern innerhalb des Projekts. Unser Ziel ist es, leicht zu bestimmen, welche Klasse wir gerade auf dem Gerät sehen.

Unsere Lösung (die nicht funktioniert hat, daher die SO-Frage) lautet wie folgt.

Überschreiben Sie die viewDidAppear-Methode von UIViewController über eine Kategorie mit dieser:

-(void)viewDidAppear:(BOOL)animated
{
    NSLog(@"Current View Class: %@", NSStringFromClass(self.class));
    [self viewDidAppear:animated];
    //Also tried this:
    //[super viewDidAppear:animated];
}

Diese Kategorie würde in die Kategorie .pch des Projekts.

Dies würde keinen zusätzlichen Code in den Hunderten von View Controllern erfordern und könnte leicht ein- und ausgeschaltet werden. Es hat nicht funktioniert, weil, wie wir jetzt gelernt haben, < Meme >Man kann eine bestehende Methode nicht einfach per Kategorie außer Kraft setzen< /meme >.

Was übersehen wir?!?

0voto

Mike M Punkte 4270

Verwendet die App Navigations-Controller, um die View-Controller anzuzeigen? Wenn ja, können Sie die Methoden des NavigationControllers verwenden, um den aktuellen Controller zu melden:

    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        [self reportNewController:viewController];
    }

    - (void) reportNewController:(UIViewController *)viewController
    {
        NSString *name = viewController.title;
            NSLog(@"Name is %@",name);
    }

0voto

Patrick Haaser Punkte 353

Sie können die Methode swizzling anwenden. Hier ist eine schöne Anleitung: http://nshipster.com/method-swizzling/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X