gpt4 book ai didi

ios - 是否可以快速从模态视图切换到不在导航 Controller 层次结构中的 View ?

转载 作者:行者123 更新时间:2023-11-30 12:45:16 25 4
gpt4 key购买 nike

在导航 Controller 的主视图上,我有一个按钮,可以以模式方式打开一个新 View 来提交帖子。我有一个按钮可以关闭此 View ,使用户返回主视图,但是如果用户继续发帖,我希望它关闭 View 并继续在导航 Controller 中显示帖子。

理想的效果是标准导航 Controller 的后退按钮位于顶部,当用户看完帖子后可以将其带回到主视图。

我尝试了几种不同的方法,但我往往会收到一条错误消息,指出“警告:尝试呈现(我想要显示的 View ),其 View 不在窗口层次结构中!

感谢您提供任何信息!

最佳答案

是的,这是可能的。这是我发现的构建应用程序以允许此功能的最佳方法。

  • Root View Controller
    • UINavigationViewController
      • ContentViewController(您当前的“主” View Controller )

您基本上将创建一个新的 RootViewController,它将包含当前的 UINavigationController 作为子级。我通常在 AppDelegate 中以编程方式设置 window.rootViewController。我还会保留对它的全局引用。

看看Apple's documentation关于这一点。基本上,RootViewController 代码如下所示:

[self addChildViewController:navController];
navController.view.frame = self.view.bounds
[self.view addSubview:self.navController.view];
[navController didMoveToParentViewController:self];

现在,每当您需要呈现模态视图 Controller 时,请从 RootViewController 呈现它,而不是 UINavigationBar 上的当前/顶部 View Controller 。这允许您独立操作 UINavigtaionController 并且不会出现您所看到的错误。

因此,从 RootViewController 呈现模态视图 Controller ,这涵盖了 UINavigationController 及其内容(顶 View Controller )。对 UINavigationController 堆栈进行所需的任何更改(推送、弹出等),无需动画。完成后关闭模态视图 Controller (带动画),它将显示您已调整 UINavigationController。

希望这一切都有道理。这有点复杂,很难用文字解释。 :p

如果您不想设置 RootViewController,您可能想尝试从 UINavigationController 中呈现模态视图 Controller ,因为这可能具有相同的效果。从 View Controller 只需执行 self.parentViewController.present 即可。

您要避免的主要事情是从 View Controller 中呈现模式,然后在模式关闭之前删除该 View Controller (弹出)。呈现 View Controller 的 View Controller 负责关闭它。

关于ios - 是否可以快速从模态视图切换到不在导航 Controller 层次结构中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41717326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com