-1

我需要在 AppDelegate 中获取某个 ViewController 的一个参数。

它不是 AppDelegate 的根。

什么是更快的方法呢?代表团?

4

2 回答 2

0

使其成为 VC 上的属性,然后您的 AppDelegate 可以根据需要访问它。

于 2014-03-23T01:25:23.070 回答
0

首先,您的设计存在严重错误,否则您不需要做这样的事情。

其次,您没有提供有关您的 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 配置。

于 2014-03-23T04:11:04.660 回答