Protokolliert den Klassennamen aller UIViewControllers in einem Projekt

8

Wir haben ein RIESIGES Projekt vom Outsourcing erhalten, 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 betrachten.

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

Überschreibe die viewDidAppear-Methode von UIViewController über eine Kategorie mit diesem:

%Vor%

Diese Kategorie würde in .pch des Projekts eingefügt.

Dies würde keinen zusätzlichen Code erfordern, der in die Hunderte von View-Controllern eingefügt und einfach ein- und ausgeschaltet werden könnte. Es hat nicht funktioniert, weil, wie wir jetzt gelernt haben, & lt; meme & gt; nicht einfach eine existierende Methode über die Kategorie & lt; überschreibt / meme & gt;.

Was vermissen wir?!?

    
adamweeks 13.12.2012, 17:24
quelle

6 Antworten

14

Die Antwort ist, die Methoden zu wechseln! Folgendes haben wir uns ausgedacht:

%Vor%     
adamweeks 13.12.2012, 17:52
quelle
3

Hier ist die Lösung dafür

Fügen Sie in Ihrer .pch-Datei dies ein

%Vor%

Erstellen Sie Ihre neue UIViewController-Unterklasse als

.h-Datei

%Vor%

Und .m-Datei

%Vor%     
Inder Kumar Rathore 13.12.2012 18:08
quelle
1

Teilen die View-Controller eine gemeinsame Basisklasse? Wenn ja, könnten Sie es einfach in die Implementierung der Basisklasse von [viewDidAppear:] einfügen. Wenn sie keine gemeinsame Basis haben, dann wäre das vielleicht eine lohnende Aufgabe, da sie sowieso nützlich sein könnte (gemeinsamer Analysecode, etc.)

    
Joel Martinez 13.12.2012 17:28
quelle
0

Sie können eine anwendungsweite Suche nach und Ersetzen von Xcode durchführen, aber es wird nicht unbedingt jeden Fall finden (aber auch nicht die Ansätze, die Sie ausprobiert haben). Du könntest nach "[super viewDidLoad];" und ersetzen durch "[super viewDidLoad]; NSLog (@" Aktuelle Ansichtsklasse:% @ ", NSStringFromClass (self.class));"

    
rdelmar 13.12.2012 17:53
quelle
0

Verwendet die App Navigationscontroller, um die View Controller anzuzeigen? Wenn dies der Fall ist, können Sie die Methoden des NavigationControllers verwenden, um den aktuellen Controller zu melden:

%Vor%     
Mike M 13.12.2012 18:13
quelle
0

Sie können Methodenwechsel verwenden. Hier ist ein netter Führer: Ссылка

    
Patrick Haaser 29.09.2016 08:55
quelle