我需要在AppDelegate中获取一些ViewController的参数。
它不是AppDelegate的根。
更快的方法是什么?团?
答案 0 :(得分:0)
将其设为VC上的属性,然后您的AppDelegate可以根据需要访问它。
答案 1 :(得分:0)
首先,你的设计出现了严重错误,否则就不需要你做这样的事了。
其次,您尚未提供有关VC层次结构的任何相关信息,并且没有针对此的一般解决方案。
但是,这里有一些变通方法/补丁:
1)如果您使用的是故事板,可以使用:
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" bundle:nil]; UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"];
2)您可以制作视图控制器单例并直接从AppDelegate
访问它3)Hacky方法:在AppDelegate中有一个@property(非原子,保留)UIVIewController * hackyViewController;
在hackyViewController.m中执行此操作
-(void)viewDidLoad{ // call super YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; YourAppDelegate.hackyViewController =self; }
理想情况下,您应该使用UIVIewcontroller的parentViewController和childViewcontroller属性在viewcontroller层次结构中导航以获取实例。您还可以创建一个递归函数,该函数在所有childViewcontroller中导航并使用iSKindOf检查实例以识别您正在查找的viewcontroller,但此方法不适用于所有iOS配置。