【问题标题】:Show UIView for app presentation only once in iOS在 iOS 中仅显示一次用于应用演示的 UIView
【发布时间】:2014-08-22 16:15:21
【问题描述】:

我需要显示一个带有一些页面的 UIScrollView,以便在首次启动时向用户展示应用程序。我的幻灯片工作正常,留下了展示它的逻辑。将 UIScrollViewController 设置为根控制器并设置 NSUserDefault 变量来控制演示文稿并重定向到主控制器或将主 ViewController 通常设置为 root 并在需要时调用演示文稿视图是更好的方法吗?如果有更好的方法可以做到这一点,有人可以帮忙吗?谢谢。

【问题讨论】:

  • 当用户第一次进入应用程序时,您的 ScrollViewController 会成为第一个显示的 ViewController 吗?

标签: objective-c iphone ios7 uikit


【解决方案1】:

您的应用的默认行为是不展示介绍幻灯片。它们仅在您第一次启动时显示。

要做出展示这些幻灯片的决定,请提出问题

这是第一次启动应用吗?

这个问题应该属于哪里?

如果你把它放在你的介绍视图控制器中,你将无法从你应用程序中其他地方的按钮(即按钮tutorial 或其他东西)呈现它。 通过将表示逻辑放在视图控制器之外,您只需让它负责管理其内容,并获得更好的关注点分离。

反例

如果你有一个登录视图控制器,它会负责登录用户。考虑这种行为的一种方法是用户登录一次,然后我想每次都跳过这个视图控制器,因此呈现它的逻辑应该属于另一个视图控制器。但在这种情况下,登录可能会对应用程序的其余部分产生影响(例如,设置网络库的 Authorization 标头)。在这种情况下,我会将其设置为应用程序的第一个视图控制器,但如果我们在用户默认值中存储了一个 auth-token,则跳过 UI,因此遵循您提出的前一个建议。此外,在导航控制器的上下文中,将此视图控制器作为根是有意义的,因为如果您的用户需要注销(或会话令牌过期),您将很容易能够popToRootViewController

【讨论】:

    【解决方案2】:

    我建议将您的主视图设置为默认值,因为 99.99% 的时间都将使用该视图。如果显示,则使用 NSUserDefault 设置布尔值,也许是 didShowFirstRun。然后在你的主控制器中,检查 NSUserDefault 的值并显示它是 nil 还是 false。

    在应用程序 didFinishLaunchingWithOptions 的 AppDelegate 中,您可以检查 didShowFirstRun 是否为 nil 并将默认值设置为 NO。

    不要围绕应用工作流的异常进行设计,显示第一次运行将是异常。

    我有一个应用程序,在显示登录视图后,它会检查首次运行并显示入门屏幕,然后在完成后设置 NSUserDefault 变量,我就完成了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 2015-01-21
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多