Ios 如何在AppDelegate.m中获取现有的UIViewController(而不是rootviewcontroller)?

Ios 如何在AppDelegate.m中获取现有的UIViewController(而不是rootviewcontroller)?,ios,xcode,uitableview,delegates,Ios,Xcode,Uitableview,Delegates,在我的AppDelegate.m中,我想获取情节提要的UITableviewcontroller。init视图控制器是一个选项卡栏控制器它是rootviewcontroller?,我使用了 TableViewController*tmp = [rootViewController.storyboard instantiateViewControllerWithIdentifier:@"AlarmlistTableViewController"]; 获取控制器。但是这个TMP似乎不是我想要的现有

在我的AppDelegate.m中,我想获取情节提要的UITableviewcontroller。init视图控制器是一个选项卡栏控制器它是rootviewcontroller?,我使用了

TableViewController*tmp = [rootViewController.storyboard instantiateViewControllerWithIdentifier:@"AlarmlistTableViewController"];
获取控制器。但是这个TMP似乎不是我想要的现有控制器。 我只想获取tableviewcontroller的数据并做些事情


我搜索了这个问题,但得到的只是如何在viewcontroller中获取委托方法,而不是相反的方法。

您将无法从情节提要中获取现有的视图控制器。看到您似乎有一个对根视图控制器的引用,您可以在其子级中找到表视图控制器,如下所示:

UITabBarViewController *tabBarViewController = (UITabBarViewController *)rootViewController;

UITableViewController *tableViewController;

for (UIViewController *viewController in tabBarViewController.viewControllers)
{
    // you can probably find a better way of identifying your table view controller

    if ([viewController isKindOfClass:[UITableViewController class])
    {
        tableViewController = (UITableViewController *)viewController;
        break;
    }
}

要从tableViewController获取数据(如果它是在tableViewController的.m中硬编码的),您只需要在AppDelegate中实例化viewcontroller。m与它当前是哪个实例无关。但如果是动态生成的数据。您可以通过委托传递数据。

如果您想要获得任何其他UIViewController,而不仅仅是rootViewController:


谢谢!这正是我寻求的方式。救命!我尝试了代码,但是如果[viewController是类:[UITableViewController类]从不执行。我确信rootUIViewController是tabBarViewController,它连接到navigationController,navigationController连接到TableViewController。UINavigationController也有一个viewControllers属性,因此您可以使用类似上面的内容来查找您的UINavigationController,然后在其viewController中搜索这是给你的UITableViewController的。我承认这种方法非常难看。是的,我做到了,虽然有点难看…也许我会尝试其他一些方法,比如在AppDelegate中初始化控制器。m。非常感谢:D检查这个答案:希望有帮助。
UIWindow *window=[UIApplication sharedApplication].keyWindow;
UIViewController *root = [window rootViewController];

UIStoryboard *storyboard = root.storyboard;
CustomViewController *vcc =(CustomViewController *) [storyboard instantiateViewControllerWithIdentifier:@"storyBoardID"];