【问题标题】:How can I check and determine which view controller in storyboard is currently showing?如何检查并确定情节提要中当前显示的视图控制器?
【发布时间】:2012-06-27 13:11:31
【问题描述】:

如果应用程序之前在后台,当调用applicationDidBecomeActive 时,我如何选择刷新用户界面?

我希望当前视图控制器始终是故事板中的初始视图控制器。我无法在我的主 AppDelegate.m 中获得指向故事板的指针。

如何检查和确定当前显示的是哪个视图控制器?

【问题讨论】:

  • 这篇文章有帮助吗? stackoverflow.com/questions/9548911/… - 即另外使用applicationWillEnterForeground。
  • AppDelegate 有window 属性,但没有情节提要。那我该怎么办?

标签: iphone ios storyboard


【解决方案1】:

如果您只是想要一个指向故事板的指针,那么您可以这样做:

UIStoryboard *sb = [[[self window] rootViewController] storyboard];

rootViewController 实际上是情节提要的初始视图控制器。如果您希望此控制器成为当前控制器(如您所说),那么您很高兴,但如果您想实际更新您的 UI,那么我想您可以从委托(applicationDidBecomeActive 内部)发布自定义通知),并注册每个可能有兴趣捕获它的控制器,以便它可以更新其 UI(或者只需添加 self 作为 UIApplicationDidBecomeActiveNotification 的观察者以捕获与您的委托捕获的相同的控制器...)。

PS。如果您的rootViewController 是UINavigationController,您可以获得当前显示的控制器,如下所示:

id currentController = [[[self window] rootViewController] visibleViewController];

【讨论】:

  • 谢谢!这很有帮助。是的,我希望rootViewController 成为当前控制器,所以我在applicationDidBecomeActive 内部做了[self.window makeKeyAndVisible];。当我重新启动应用程序时,rootViewController 内部的loginAciton 仍然被调用,但不能presentModalViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"Navigation"]。为什么?
  • 附言。我的rootViewController 不是UINavigationController。
  • 它会产生任何错误吗?当您尝试展示控制器时发生了什么?
  • 嗯,用这么少的信息很难判断出什么问题。您是否尝试设置断点和步骤以查看失败的原因?
  • 你确定你的视图控制器就是被呈现的视图控制器,而你没有其他东西被呈现
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多