我已经构建了一个没有菜单的程序。主视图具有自定义按钮,可根据按下的按钮加载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)都已重置,就好像我是第一次打开它一样
答案 0 :(得分:1)
使用this
创建单例类然后在那里初始化.xibs,这样每次加载.xib时都可以使用相同的实例。这样它永远不会重置
答案 1 :(得分:1)
不是每次需要使用它时都要分配和初始化,而是保留对你正在使用的所有视图控制器的引用,如果这样初始化,请在第一次检查它的nil,例如下面。
if(self.someViewController == nil)
self.someViewController = [[ViewController alloc] initWithNibName:@"ViewController"....
//Now present self.someViewController..
对用于选项卡的视图控制器执行此操作。