在我的AppDelegate.m中,我想获得故事板的UITableviewcontroller。 init视图控制器是一个标签栏控制器(是rootviewcontroller吗?),我使用了
TableViewController*tmp = [rootViewController.storyboard instantiateViewControllerWithIdentifier:@"AlarmlistTableViewController"];
获取控制器。但似乎这个TMP不是我想要的现有控制器。 我只想获取tableviewcontroller的数据并做一些事情。
我搜索了这个问题,但我得到的是“如何在viewcontroller中获取委托方法”,相反的方法。
答案 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"];