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?!?
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%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.)
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));"
Sie können Methodenwechsel verwenden. Hier ist ein netter Führer: Ссылка
Tags und Links objective-c ios nslog uiviewcontroller