0

何らかの理由で、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 を期待していますが、それは私のコードで上書きされたばかりの「オリジナル」です。

何かがあるに違いないと思いますが、警告を「抑制」または「回避」する方法がわかりません。

または、複数のメソッドを生成する必要があります!?

よろしくお願いします...

4

1 に答える 1