我需要在 AppDelegate 中获取某个 ViewController 的一个参数。
它不是 AppDelegate 的根。
什么是更快的方法呢?代表团?
我需要在 AppDelegate 中获取某个 ViewController 的一个参数。
它不是 AppDelegate 的根。
什么是更快的方法呢?代表团?
使其成为 VC 上的属性,然后您的 AppDelegate 可以根据需要访问它。
首先,您的设计存在严重错误,否则您不需要做这样的事情。
其次,您没有提供有关您的 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 配置。