1

メニューなしでプログラムを作成しました。メイン ビューには、押されたボタンに応じて XIB をロードするカスタム ボタンがあります。私が抱えている唯一の問題は、既に使用されているビューに戻るとき、そのリセットです。viewDidUnload と viewWillUnload で「保持」を試みました。私はできる限りのことを試しましたが、それを機能させることはできません。

- (IBAction)gotoMusicView:(id)sender{
    //[self.view addSubview:musicview];
    if(self.musicMenuData == nil)
    {
        musicMenu *musicview = [[musicMenu alloc]initWithNibName:@"musicMenu" bundle:[NSBundle mainBundle]];
        self.musicMenuData = musicview;
        musicview.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentModalViewController:musicview animated:YES];
        [musicview release];
    }

    musicMenu *musicview = [[musicMenu alloc] initWithNibName:nil bundle:nil];
    musicview.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:musicview animated:YES];

   }

そのミュージックビューは正常にロードされます。そのビューを離れてメイン ビューに戻ると、リリースされます。したがって、「musicview」を再度開くと、UIWebView などのすべてが、最初にもう一度開いているかのようにリセットされます。

4

2 に答える 2

1

使用する必要があるたびに割り当てて初期化するのではなく、使用しているすべてのView Controllerの参照を保持し、初期化する場合は、最初にそのnilを確認します(以下の例)。

if(self.someViewController == nil)
     self.someViewController = [[ViewController alloc] initWithNibName:@"ViewController"....

   //Now present self.someViewController..

タブに使用するビューコントローラに対してこれを行います。

于 2012-06-03T23:44:57.237 に答える
1

これを使用してシングルトンクラスを作成します

そして、そこで .xib を初期化して、.xib をロードするたびに同じインスタンスを使用できるようにします。このままではリセットされない

于 2012-06-03T23:10:09.120 に答える