UIView保留类似于TabBarController XCODE的数据

时间:2012-06-03 22:45:06

标签: iphone objective-c xcode

我已经构建了一个没有菜单的程序。主视图具有自定义按钮,可根据按下的按钮加载XIB。我唯一的问题是当我回到已经使用过的视图时,它的重置。我在viewDidUnload和viewWillUnload中尝试过“retain”。我已经尝试了所有我能做的事情并且无法让它发挥作用。

- (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)都已重置,就好像我是第一次打开它一样

2 个答案:

答案 0 :(得分:1)

使用this

创建单例类

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

答案 1 :(得分:1)

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

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

   //Now present self.someViewController..

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