Ios 如何在AppDelegate.m中获取现有的UIViewController(而不是rootviewcontroller)?
在我的AppDelegate.m中,我想获取情节提要的UITableviewcontroller。init视图控制器是一个选项卡栏控制器它是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似乎不是我想要的现有
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"];