【问题标题】:Access to UIViewController from a random class从随机类访问 UIViewController
【发布时间】:2014-11-05 19:58:55
【问题描述】:

我正在尝试找到如何从我的项目中的随机类访问UIViewcontroller 的解决方案。

在我上课之前:

MBViewController vc =  (MBViewController *)[[[[UIApplication sharedApplication] delegate] window] rootViewController];

效果很好。

现在我更改了rootViewController“我将AMSlidMenuMainVC 类用作rootview”,因此该路径不再可用。

谁能帮帮我。

【问题讨论】:

  • 信息不足。你是如何创建这个视图控制器的?一般来说,您应该在创建它时保存一个指向它的指针。单例是保存应用全局数据的好地方 - 比应用委托更好。
  • 你不应该这样做。最好将 viewController 传递给需要访问它的对象。
  • 是的@DanielT。但是如果每次使用我的 MBViewController 时,我都会丢失我在上面显示的旧数据。我猜最好的方法是在我的 MBViewController 中做单例?
  • 如果您每次使用 VC 都会丢失数据,那么这就是您的问题。让 VC 全球可用并不能解决这个问题。
  • Plasher 给出了一个好主意:..delegate] window] vc];但我无法获得 vc 因为他没有在 UIWindow 界面中声明:s

标签: ios objective-c uiviewcontroller


【解决方案1】:

您可以将该 ViewController 创建为 AppDelegate 中的属性。然后你就可以在任何地方使用它来访问它(因此它不是最适合编程的形式)

MBViewController vc =  (MBViewController *)[[[UIApplication sharedApplication] delegate] _viewController];

【讨论】:

  • 谢谢我试过 MBViewController *vc = (MBViewController *)[[[[UIApplication sharedApplication] delegate] window] _viewController];
  • 但他没有为我找到 _viewController 并且我在我的 AppDelegate 中创建为属性
  • 回答已编辑,它不是窗口,只是委托。立即尝试
  • 它也不起作用编译错误是不知道选择器'_viewController'的实例方法
  • vc = ((MBAppDelegate *)[UIApplication sharedApplication].delegate)._viewController;它试过这个,它工作,但我想我仍然需要在我的 ViewController 上做一个单例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多