Xcode 4.1同时关闭两个ModalViewController

时间:2012-04-05 09:21:30

标签: objective-c ios modalviewcontroller dismiss

我正在做一个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];

感谢一些帮助。

谢谢。

4 个答案:

答案 0 :(得分:2)

您需要使用委托方法。

我希望您已经听说过iOS中的协议和代理。要了解更多相关信息,see here

Download此应用程序,看看我是如何实现的。

答案 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,因为BOOLYES,它应该自行解除。

希望你理解它:)