2012-06-03 19 views
1

我已经构建了一个没有菜单的程序。主视图具有自定义按钮,它们根据按下哪个按钮来加载XIB。我遇到的唯一问题是当我回到已经使用过的视图时,它的重置。我已经在viewDidUnload和viewWillUnload中尝试过“保留”了。我已经尝试了所有可以瘦身的东西,而且无法让它工作。UIView保留与TabBarController类似的数据XCODE

- (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,已经重置,就好像我是第1次

+0

通过重置,你的意思是viewDidLoad中的代码正在执行?另外,请发布与显示和创建已使用视图的控制器相关的代码。 –

回答

1

创建使用this

一个单独的类再就是初始化.xibs所以你再次打开它可以在每次加载.xib时使用相同的实例。这样它就永远不会重置

1

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

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

    //Now present self.someViewController.. 

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

+0

这是从我的主视图。这是我用来查看新视图的方法。在我离开新的视图后,数据被重置(我的uiwebview是重新创建的,所有内容都像第一次一样被加载...... – user1434110