我正在做一个TabBarApplication,以及一个用ModalViewController提供的登录屏幕。 在“登录”屏幕中是新的注册按钮,这会导致我选择帐户类型,然后引导我填写包含个人信息的表单。 我还在帐户类型屏幕和个人信息表单中返回按钮。
它是这样的: A - 登录屏幕。 B - 帐户类型。 C - 个人信息表。
用户采用这种方式:A-> B-> C
如果用户按回帐户类型(B),我只是将其解雇并完成。
如果用户按下个人信息(C),我会关闭C和B视图。
但问题是,如果用户成功注册。我需要同时解雇C和B并转到A(登录屏幕),我不能这样做。
由于B是C的父级,我不能同时解雇它们。
这样我称之为新观点:
ScreenUpdateAccountOuter *registerscreen = [[ScreenUpdateAccountOuter alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:registerscreen animated:YES];
这样我解雇了他们:
[self.parentViewController dismissModalViewControllerAnimated:YES];
感谢一些帮助。
谢谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
请注意,这是伪代码。
在C中:创建一个bool并将其设置为yes。
在B:
- (void)viewDidAppear
{
if (myBool == YES)
{
[self.parentViewController dismissModalViewControllerAnimated:YES];
}
}
答案 2 :(得分:0)
当你在C上,并且想要跳回到A时,在B上调用dismissModalViewController,它将为C out设置动画,并在下面显示A.这是多个模态堆叠起来的行为。
答案 3 :(得分:-1)
尝试使用:
[self.navigationController popToRootViewControllerAnimated:YES];
希望有所帮助
修改强>
可能是一个草率的解决方案,但尝试将BOOL
属性添加到第二个控制器。并在viewWillAppear
进行检查。如果它是YES
,那么就解雇那个控制器。在第三个视图中创建第二个视图的属性,然后在从第二个视图切换到第三个视图之前将该属性设置为self。然后在完成注册后将第二个控制器中的BOOL
设置为YES
。之后,应调用第二个视图的viewWillAppear
,因为BOOL
为YES
,它应该自行解除。
希望你理解它:)