我有第一个视图,即登录屏幕。用户登录后,有一个按钮将视图推送到第二个视图。我的问题是,当我按下推回第一个视图的按钮时,它会调用viewDidLoad方法并运行视图,就好像我刚刚构建了应用程序一样。我有根据登录用户设置的其他标签,所以我希望在推送之前保留第一个视图的状态。
这是我用来推送到第二个视图的方法:
-(IBAction) secondView
{
_secondView = [[SecondViewController alloc]initWithNibName:nil bundle:nil];
[self presentModalViewController:_secondView animated:YES];
[_secondView release];
}
以及推回第一个视图的方法:
-(IBAction) back {
_firstView = [[FirstViewController alloc]initWithNibName:nil bundle:nil];
[self presentModalViewController:_firstView animated:YES];
[_firstView release];
}
我没有使用导航控制器,所以有没有办法将我的第一个视图推回到我推到第二个视图时的状态?提前谢谢。
答案 0 :(得分:3)
要返回firstViewController,而不是将其推入堆栈(然后是_firstView _secondView _firstView
),请使用
-(IBAction) back {
[self dismissModalViewControllerAnimated:YES];
}
您正在做的问题是, 在您使用当前方法“返回”时创建新的firstViewController(alloc
和init
是这个线索)。实际上,你只想在firstViewController的顶部弹出第二个ViewController,你可以使用上面的方法。
答案 1 :(得分:3)
您需要关闭第二个UIVIewController
,而不是将第一个视为另一个模态视图。
您应该使用以下内容替换back
方法:
-(IBAction)back:{
[[self parentViewController] dismissModalViewControllerAnimated:YES];
}
这将返回到第一个视图,并且(可能)释放第二个UIViewController
。
希望这有帮助。
答案 2 :(得分:3)
如果要回到FirstViewController,请在后面的方法中使用此代码
[self dismissModalViewControllerAnimated:YES];
答案 3 :(得分:0)
当你返回时,解除你的SecondViewController,而不是创建FirstViewController的实例并呈现它。