0

Appデリゲートを使用してユーザーの操作に応じて切り替えるViewControllerが2つあります。

AppDelegate.m には次のものがあります。

    - (void) switchViews
{
    if (_viewController.view.superview == nil) {
        [_window addSubview:_viewController.view];
        [_window bringSubviewToFront:_viewController.view];
        [viewController2.view removeFromSuperview];
    } else
    {
        [_window addSubview:_viewController2.view];
        [_window bringSubviewToFront:_viewController2.view];

        [_viewController.view removeFromSuperview];
    } 
}

_viewController はメイン ビュー用で、_viewController2 は glview 用です (私は isgl3d を使用しています)。スイッチは機能しますが、glview に戻るたびに、上部に重複したビューが表示されます。メイン ビューも重複していると思われます。

この問題が発生しないように、ビューを完全に削除するにはどうすればよいですか? ありがとう!

4

2 に答える 2

0

Stanford Coding Together:IOS を見て、これを行う方法を知りました。

私が認識していない VC の重要な情報: VC がインスタンス化されるたびviewDidLoadに、アウトレットなどのすべての重要なものをセットアップするために一度呼び出されます。次にviewWillAppearviewWillDisappearビューのスワッピングの間に呼び出されます。ビューがユーザーに表示される直前に呼び出されるため、ビューの向きやサイズなどのすべてのジオメトリ設定がここで設定されます。

だから私がすることは次addSubviewのとおりviewDidLoadです。viewWillappearviewWillDisappear

もう 1 つ注意: アプリがまだ実行されている限り、ビューはそこに残ります。

とにかく助けてくれてありがとうrdelmar。

于 2013-04-16T12:27:04.963 に答える