gpt4 book ai didi

iOS:从任何地方返回 Root View Controller

转载 作者:行者123 更新时间:2023-11-28 21:58:08 28 4
gpt4 key购买 nike

我正在编写一个需要服务器登录的 iPhone 应用程序。应用程序的 Root View Controller 检查用户是否已登录,并有条件地将用户发送到两个 Storyboard(登录或主应用程序)之一。根 Controller 不是 UINavigationController(我见过的许多针对此问题的解决方案都假定它是)。如果用户在服务器上注销(超时等),服务器请求将返回一个 HTTP 401,我在我的 Web 请求代码中拦截了它......我怎样才能让用户返回登录屏幕和/或 Root View Controller ?我已经搜索了 StackOverflow 和互联网的其他部分几个小时,但找不到答案。我尝试了一个 Unwind Segue,它似乎被正确调用(没有错误),但它实际上并没有展开到 Root View Controller ,也许是因为我直接在 Root View Controller 上调用它,这是我的 Web 请求类中只有一个可见。有什么想法吗?

这是我的应用流程:

                           +-------------------+                                                      +-------------------------->                   |                                                      |                          |RootViewController |                                                      |               +----------+UIViewController   +------+                                               |               |          +-------------------+      |                                               |               |                                     |                                               |       +-------v---------+                 +----+----v-----------------+                             |       |Login storyboard |                 |SWRevealViewController     |                             |       |2 Views          |                 |see note                   |                             |       +-------+---------+                 +---+-------------------+---+                             |               |                               |                   |                                 |               |                               |                   |                                 +---------------+                    +----------v-------+      +----v--------------------------------+                                     | Drawer           |      |  Main Storyboard                    |                                     | UIViewController |      |  Starts with UINavigationController |                                     +------------------+      |                                     |                                                               +-------------------------------------+

SWRevealViewController是一种奇怪的野兽……它同时显示两个 UIViewController,一个在另一个前面,后面的一个就像一个“抽屉”,这样前面的一个就可以滑到一边来访问它。

最佳答案

在 RootViewController viewDidLoad 中,订阅注销通知。在 viewDidAppear 的同一个类中,检查用户的登录状态。如果用户需要登录,请在您的 LoginViewController 上显示 presentViewController,否则显示 SWRevealController。

在您的通知处理程序中,如果用户失去登录状态,只需执行以下操作:

[self dismissViewControllerAnimated:YES];

Dismiss,当在根 vc (self) 上调用时,不关心顶部的 View Controller 是什么,或者中间有多少 View Controller ,它会删除所有内容以显示调用它的 vc。该根 vc 将拥有它的 viewDidAppear** 火,您构建它是为了根据登录状态做正确的事情。

关于iOS:从任何地方返回 Root View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25854554/

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