"修理"しようとしているアウトソーシングからHUGEプロジェクトを受け取りました。プロジェクト内には何百ものビューコントローラがあります。私たちの目標は、デバイス上で現在どのクラスを見ているのかを簡単に判断することです。プロジェクト内のすべてのUIViewControllerのクラス名をログに記録
私たちのソリューション(これはうまくいきませんでした、したがってSOの質問)は次のとおりです。
このカテゴリで経由のUIViewControllerのviewDidAppearメソッドをオーバーライドします:
-(void)viewDidAppear:(BOOL)animated
{
NSLog(@"Current View Class: %@", NSStringFromClass(self.class));
[self viewDidAppear:animated];
//Also tried this:
//[super viewDidAppear:animated];
}
このカテゴリには、プロジェクトの.PCHに置かれます。
これにより、何百ものView Controllerに追加したり、簡単にオン/オフすることができます。 > 1は、単にカテゴリ< /ミームを経由して既存のメソッドをオーバーライドしないミーム < 、私たちが今学んできたとして、ので、それは動作しませんでした>。
私たちには何が欠けていますか?
このコードには無限ループがありますか?[super viewDidAppear:animated]を呼び出す必要があります。 –
@BrunoDominguesこれはUIViewControllerのカテゴリなので、superを呼び出すと、存在しないNSObject(UIViewControllerのスーパークラス)でviewDidAppearが呼び出されます。 – adamweeks
UIWindowのrootViewControllerから、現在表示されているビュー(ビューコントローラ)を見つけることができます。 – 9dan