iPhone 切换视图 _KILL !问题
Posted
技术标签:
【中文标题】iPhone 切换视图 _KILL !问题【英文标题】:iPhone Switch views _KILL ! Problem 【发布时间】:2009-10-30 19:17:51 【问题描述】:我在使用 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 页到后面:
#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];
点击后退按钮后,我的应用程序崩溃了... 我的问题是什么? 谢谢
【问题讨论】:
我强烈建议您编辑帖子以修复代码格式。在目前的状态下阅读起来非常困难。 【参考方案1】:您将 view2 添加到 view1,然后将 view1 添加回 view2。完成 View2 后,只需调用 self.view.removeFromSuperview
即可再次显示视图 1。
实际上,再看一遍,似乎您可能想查看presentModalViewController
以显示视图2。
【讨论】:
所以我必须改变这一行 [self.view addSubview:back1.view];到这个? : [self.view.removeFromSuperview];【参考方案2】:两个想法可能对你有所帮助:
我想你可能想通过 Instruments 来运行它。你在泄漏内存吗?你每次点击都分配一个视图,然后缓存它……你要释放它们吗?
如果有两个独立存在的视图会更容易吗,例如在一个数组中,然后索引您想要激活的视图并将其包装到上面的动画循环中,同时释放和隐藏另一个视图?不太确定如何让其他视图在命令中消失,因为释放是垃圾控制的......但我知道有办法做到这一点。
And this is from a post from earlier that helped me when I was asking how to remove a subview immediately:
myGroovySubview.hidden = YES;
隐藏视图。您也可以尝试使用 [myGroovySubview removeFromSuperview] 将其从其超级视图中删除;如果您将其从其父视图中删除,则释放调用应自动将其从内存中删除,因为在该调用之后引用计数应为零。
【讨论】:
to marc :所以我必须更改这一行 [self.view addSubview:back1.view];到这个? : [self.view.removeFromSuperview]; ?? 从视图 1 开始。然后添加子视图 2。当您完成子视图 2 后,将其从超级视图中删除。你留下了子视图 1。在你的代码中,你用 addSubview... 添加视图 2,你用 removeFormSuperview... 删除视图 2... 谢谢...但是你能写出正确的代码吗?我是业余爱好者:(以上是关于iPhone 切换视图 _KILL !问题的主要内容,如果未能解决你的问题,请参考以下文章
Iphone 上的多个 OpenGL ES 视图是不是有高效且标准化的代码?