何らかの理由で、pushViewController メソッドを上書きするために navigatioController をサブクラス化しています。
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
NSLog(@"Pushing %@ to NavigationController", viewController);
if([[self viewControllers] containsObject:viewController])
{
if( [self topViewController] == viewController )
{
NSLog(@"Pushed ViewController is already on top!");
}
else
{
NSLog(@"Moving Pushed ViewController to top!");
[self popToViewController:viewController animated:animated];
}
}
else
{
[super pushViewController:viewController animated:animated];
}
NSLog(@"NavigationControllers: %@", [self viewControllers]);
}
すべてが機能していますが、viewcontrollerがnavigationControllerにプッシュされるコード行があると、警告が表示されます:
Incompatible pointer types sending 'NMROViewController *' to parameter of type 'UIViewController *'
これはちょっと「邪魔」です。わかりました、メソッドの署名は UIVIewController を期待していますが、それは私のコードで上書きされたばかりの「オリジナル」です。
何かがあるに違いないと思いますが、警告を「抑制」または「回避」する方法がわかりません。
または、複数のメソッドを生成する必要があります!?
よろしくお願いします...