从 AppDelegate 中的 ViewController 获取参数。
Posted
技术标签:
【中文标题】从 AppDelegate 中的 ViewController 获取参数。【英文标题】:Get param from ViewController in AppDelegate. 【发布时间】:2014-03-23 01:20:36 【问题描述】:我需要在 AppDelegate 中获取某个 ViewController 的一个参数。
它不是 AppDelegate 的根。
什么是更快的方法呢?委托?
【问题讨论】:
投反对票,因为为此问题提供的详细信息不足。在您期望任何人帮助您之前,您应该共享您的代码和视图控制器层次结构。 【参考方案1】:将其设为您的 VC 上的属性,然后您的 AppDelegate 可以根据需要访问它。
【讨论】:
我不能,我不是从 rootVC 子创建这个 VC 您应该能够向任何 VC 子类添加属性。不管它是否是rootVC。或者你是说你没有指向 VC 的变量来访问它的属性?如果是这样,请在您的 AppDelegate 上创建一个属性并将您的 VC 设置为它(这样您就可以访问其他属性),或者只是将相关变量分配给 AppDelegate 上的一个属性。【参考方案2】:首先,您的设计存在严重错误,否则您不需要做这样的事情。
其次,您没有提供有关您的 VC 层次结构的任何相关信息,并且对此没有通用解决方案。
但是,这里有一些解决方法/补丁:
1) 如果您使用故事板,您可以使用:
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" 捆绑:无]; UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"];2) 您可以将视图控制器设为单例并直接从 AppDelegate 访问它
3) Hacky 方法:在 AppDelegate 中有一个@property (nonatomic, retain) UIVIewController *hackyViewController;
在 hackyViewController.m 中这样做
-(void)viewDidLoad // 调用超级 YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; YourAppDelegate.hackyViewController =self;理想情况下,您应该使用 UIVIewcontroller 的 parentViewController 和 childViewcontroller 属性浏览视图控制器层次结构以获取实例。您还可以创建一个递归函数,该函数在所有 childViewcontroller 中导航并使用 iSKindOf 检查实例来识别您正在寻找的 viewcontroller,但此方法不适用于所有 ios 配置。
【讨论】:
以上是关于从 AppDelegate 中的 ViewController 获取参数。的主要内容,如果未能解决你的问题,请参考以下文章
IOS 从 AppDelegate 中的 addMessageFromRemoteNotification 显示 UIViewController
从 ViewController 访问 AppDelegate 中的对象
Swift:从 AppDelegate 中的 UNTextInputNotificationAction 获取内容
如何将 CoreLocation 值从一个 VIewController 传递到 iOS 中的 AppDelegate?