【问题标题】:Xcode 4.1 Dismiss Two ModalViewController at same timeXcode 4.1 同时关闭两个 ModalViewController
【发布时间】:2012-04-19 00:52:33
【问题描述】:

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

感谢一些帮助。

谢谢。

【问题讨论】:

    标签: objective-c ios modalviewcontroller dismiss


    【解决方案1】:

    您需要使用委托方法。

    我希望您听说过 iOS 中的协议和委托。要了解更多信息,see here

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

    【讨论】:

    • 你不需要导航控制器。如果您有任何疑问,请。在这里发布。
    • 非常感谢...在查看您的代码后完美运行 :)
    • 请参阅下面的答案,了解按照您的描述关闭两个模态视图控制器的正确方法。
    【解决方案2】:

    请注意,这是伪代码。

    在 C 中:创建一个 bool 并将其设置为 yes。

    在 B 中:

    - (void)viewDidAppear
    {
        if (myBool == YES)
        {
        [self.parentViewController dismissModalViewControllerAnimated:YES];
        }
    }
    

    【讨论】:

    • 您好,谢谢您的回复。问题在于:viewDidAppear 仅在用户从 A 转到 B 时被调用一次......当我输入 myBool = YES 并关闭 C...... viewDidAppear 不再被调用。有什么建议吗?
    【解决方案3】:

    在 C 上,你想跳回 A,在 B 上调用dismissModalViewController,它会动画 C 出来,并在下面显示 A。这就是像这样堆叠多个模态的行为。

    【讨论】:

      【解决方案4】:

      试试这个:

      [self.navigationController popToRootViewControllerAnimated:YES];
      

      希望对你有帮助

      编辑

      可能是一个草率的解决方案,但请尝试将BOOL 属性添加到第二个控制器。并在viewWillAppear 进行检查。如果是YES,那么只需关闭该控制器。在第三个视图中创建第二个视图的属性,然后在从第二个视图切换到第三个视图之前将该属性设置为 self。然后在完成注册后将第二个控制器中的BOOL 设置为YES。之后应该调用第二个视图的viewWillAppear,因为BOOLYES,它应该自行关闭。

      希望你能理解 :)

      【讨论】:

      • 没有导航控制器,你可以看到它使用“presentModalViewController”
      • 实际上什么也没发生。没有错误,没有移动。该按钮工作正常,但这段代码没有做任何事情。感谢您的帮助
      • 我的建议,只需在主窗口中添加 UINavigationcontrol 并设置为隐藏然后调用 [self.navigationController popToRootViewControllerAnimated:YES];也许它会起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多