【问题标题】:Disable a single storyboard?禁用单个故事板?
【发布时间】:2012-10-17 15:12:47
【问题描述】:

有没有一种简单的方法可以根据条件禁用单个情节提要场景?

我用来检查我的应用是否启用了位置服务:

[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied

如果上述情况属实,那么我想禁用我创建的场景以及相关联的转场以到达该场景(我正在使用左/右滑动手势)。

** 已更新:我将多个故事板与多个场景混淆了……我的问题已更新以反映这一点。我想禁用情节提要中的特定场景,而不是情节提要。

【问题讨论】:

  • 你的问题不是很清楚。您是否有多个故事板,或者您只是在谈论禁用一个故事板中的某些视图控制器?
  • @rdelmar 我有一个带有 2 个故事板的视图控制器。我想在应用已禁用位置服务的情况下禁用第二个故事板。
  • 在应用程序中,有一个故事板会在应用程序启动时自动加载(通常是 MainStoryboard)。如果您有其他情节提要,则必须显式加载它们——因此,如果您不想加载它,请不要这样做。但我怀疑你的术语令人困惑——我不明白你怎么能有 2 个故事板,但只有一个视图控制器。
  • @rdelmar 我可能混淆了术语。我是一个非常兼职的开发人员。我使用 GUI 创建了基于左/右滑动手势的第二个故事板。我只是想根据是否为应用程序启用位置服务来禁用第二个故事板。这有意义吗?
  • 只需将代码放入手势识别器的处理程序中即可检查位置服务的可用性状态,如果未打开则不要加载新的故事板。

标签: objective-c ios xcode storyboard uiswipegesturerecognizer


【解决方案1】:

要做你想做的事,你应该在你的视图控制器中编写一个动作,使用你设置的条件来选择场景(或根本没有)。不要只是让按钮或手势触发 push segue——让它触发视图控制器中的操作,以便您可以在代码中选择下一个场景。

您可以直接在故事板文件中设置转场,这一切都很好,而且它是一个很棒的演示,但是当您想在运行时确定目标场景时,您需要在代码中完成。

【讨论】:

    【解决方案2】:

    我最终从这篇文章中得到了提示:https://stackoverflow.com/questions/8309104/enable-disable-swiper-gesture-or-view-change-in-storyboard

    我刚刚在标题中为滑动手势创建了一个 IBOutlet,并将以下代码放在一个 if 语句中,该语句检查用户是否启用了位置服务,并将其连接到 IB 中的 segue 之外:

    swipe.enable = NO;
    

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 2013-09-17
      • 2014-11-13
      • 1970-01-01
      • 2021-03-04
      • 2016-02-12
      • 2020-08-05
      • 2017-02-22
      • 2017-01-04
      相关资源
      最近更新 更多