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

使用这个创建一个单例类

然后在那里初始化您的 .xib,这样您每次加载 .xib 时都可以使用相同的实例。这样它永远不会重置

于 2012-06-03T23:10:09.120 回答
1

不要在每次需要使用它时进行分配和初始化,而是保留您正在使用的所有视图控制器的引用,如果需要初始化,请在第一次检查它的 nil,例如下面的示例。

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

   //Now present self.someViewController..

对用于选项卡的视图控制器执行此操作。

于 2012-06-03T23:44:57.237 回答