我在使用nib文件的2个视图之间切换视图时遇到问题! 我的代码。 我的第一页转到第2页!但在第2页我不能回到第一页!我的应用程序出去了..这是我的代码:
从第1页到第2页:
#import "HafezViewController.h"
#import "GhazaliateHafez.h"
-(IBAction)gh:(id)sender {
HafezViewController *ghPage = [[HafezViewController alloc] initWithNibName: @"GhazaliateHafez" bundle:nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.3];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
[self.view addSubview:ghPage.view];
[UIView commitAnimations];
}
^^^^^^^^^ 这段代码很棒! 但是从第2页到第2页:
#import "GhazaliateHafez.h"
#import "HafezViewController.h"
@implementation GhazaliateHafez
-(IBAction)ghtoIndex:(id)sender {
HafezViewController *back1 = [[HafezViewController alloc] initWithNibName:@"index" bundle:nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[self.view addSubview:back1.view];
[UIView commitAnimations];
}
点击后退按钮后我的应用程序崩溃... 我的问题是什么? 谢谢
答案 0 :(得分:1)
您正在将view2添加到view1,然后将view1添加回view2。完成View2后,将再次显示简单调用self.view.removeFromSuperview
和视图1。
实际上,再看一遍,您似乎可能需要查看presentModalViewController
来显示视图2.
答案 1 :(得分:0)
两个可能对你有帮助的想法:
我想你可能想通过乐器运行它。你在泄漏记忆吗?你是在每次点击时分配一个视图,然后缓存它......你是在发布它们吗?
在一个数组中有两个与之分离的视图会更容易,例如,然后索引要激活的视图并将其包装到上面的动画循环中,同时释放并隐藏另一个视图吗?由于释放是垃圾控制的,不太确定如何让其他视图消失,但是我知道有办法实现它。
myGroovySubview.hidden = YES;
隐藏视图。您也可以尝试使用[myGroovySubview removeFromSuperview]从超级视图中删除它;如果您从超级视图中删除它,则释放调用应自动将其从内存中删除,因为该调用后引用计数应为零。