【问题标题】:How to present ModalViewController in iOS app with TabBarController?如何在 iOS 应用中使用 TabBarController 呈现 ModalViewController?
【发布时间】:2013-02-09 07:04:09
【问题描述】:

当您想在带有 TabBarController 的应用中将 LoginViewController 呈现为“ModalViewController”时,我正在寻找有关最佳实践方法的反馈。

情况是这样的: - 应用程序支持具有登录/注销功能的用户会话 - 当应用程序启动时,它会尝试自动登录并直接显示 TabBarController 或 LoginViewController(显示为 ModalViewController 以在登录时启用关闭动画) - 应用程序有一个带有多个选项卡的 TabBarController。 - 每次呈现 ViewController 时都会检查用户的状态 - 如果用户没有登录 ModalViewController 应该显示登录功能 - 如果用户手动注销,应该显示相同的 ModalViewController

我尝试了几种不同的设计来处理这个问题,但没有人觉得完全“正确”。我曾在一个项目中使用子类 UIWindow 处理此问题,该子类 UIWindow 替换了应用程序的默认 UIWindow。然后子类监听不同的通知,例如“UserLoggedInSuccessfully”、“UserLoggedOut”等,以处理 ModalViewController 的呈现。

还有其他解决方案吗?对于这种解决方案的任何意见和经验,我将不胜感激。

【问题讨论】:

  • 切换标签页时为什么要检查用户是否登录?如果需要登录才能使用该应用程序,则只需在启动时登录即可。当应用程序退出(或进入后台,如果你想),你可以自动注销用户。
  • 是的,我想在不需要切换选项卡时进行检查,因为无论如何它都会处理所有 API 请求。好点子。

标签: ios modalviewcontroller uiwindow


【解决方案1】:

这个问题有不同的解决方案,你可以尝试这些替代方案,但我会说第一个是推荐的方法,

    1234563如果会话无效,则将LoginViewController 显示为ModalViewController,否则显示TabBarController 并包含所有选项卡。
  1. 替代方案可能是将所有控制器都放在选项卡中,但是当您呈现 LoginViewController 时,在用户登录后,将所有控制器添加到 MutbaleArray 中并删除当前对象 LoginViewController .一旦用户登录,将信息保存在钥匙串中,这样用户就不必一次又一次地登录,这样你就可以避免每次都显示LoginViewController,一旦用户尝试注销,然后添加@987654332 @ 在一个数组中,然后在 LoginViewController 之后添加所有 TabBarController 对象。

【讨论】:

    【解决方案2】:

    您可以执行以下操作, 当用户打开应用程序时,您必须将 loginviewcontroller 显示为 rootviewcontroller,然后当登录成功时,您必须将 tabbarviewcontroller 作为 rootViewcontroller 。 那么每次当用户运行应用程序时,你必须检查他是否有一个有效的会话,你将把一个 tabar 作为 root 如果会话在您在标签栏上过期时,您必须从您的应用委托更改根视图控制器才能登录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2011-05-15
      相关资源
      最近更新 更多