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

时间:2014-08-20 05:38:06

标签: ios xcode uitableview delegates

在我的AppDelegate.m中,我想获得故事板的UITableviewcontroller。 init视图控制器是一个标签栏控制器(是rootviewcontroller吗?),我使用了

TableViewController*tmp = [rootViewController.storyboard instantiateViewControllerWithIdentifier:@"AlarmlistTableViewController"];

获取控制器。但似乎这个TMP不是我想要的现有控制器。 我只想获取tableviewcontroller的数据并做一些事情。

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

3 个答案:

答案 0 :(得分:0)

您将无法从故事板中获取现有的视图控制器。看到你似乎有一个对根视图控制器的引用,你可以在它的子节点中找到你的表视图控制器,例如:

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;
    }
}

答案 1 :(得分:0)

要获取tableViewController中的数据,如果它在tableviewcontroller的.m中是硬编码的,你只需要在AppDelegate.m中实例化viewcontroller,这与它目前的实例无关。但如果它是动态生成的数据。您可以通过代理传递数据。

答案 2 :(得分:0)

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

UIWindow *window=[UIApplication sharedApplication].keyWindow;
UIViewController *root = [window rootViewController];

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