在我的窗口基础应用程序中,我需要从appdelegate导航到editorview,当我点击tabbarcontroller的第二项时,它将显示一个包含三个选项的动作表。
动作表工作正常,如果您从标签栏中选择第二项,它会显示一个动作表。
但是当我选择操作表的第一个选项时,我需要推送到另一个视图
我在appdelegate中声明了我的动作表。
我已经实现了actionsheetdelegate
该方法是trigerred,它可以显示我是否执行nslog。但它不能推到我想要的viewcontroller .. 这是我的代码:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
DetailViewController *v2 = [[DetailViewController alloc] init];
NSLog(@"PUSH TRIGER");
[self.window.rootViewController.navigationController pushViewController:v2 animated:YES];
}
}
注意:我已经在我的故事板中嵌入了tabbarcontroller和导航控制器
答案 0 :(得分:9)
与此问题相关的答案很糟糕。
我希望我的符合你的要求。
1.-内部
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
// 1.-首先:实例化navigationController。通常是rootviewcontroller
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
// 2.-第二:实例化故事板 //它可能被标记为MainStoryBoard。如果你改了它就要小心
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
// 3.-第三次实例化您想要导航的VC //在我的特定情况下,它被称为IniciarSliderViewController。不要忘记在appdelegate中导入它。还要注意正确标记。在我的案例中,MenuSlider
IniciarSliderViewController *controller = (IniciarSliderViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MenuSlider"];
// 4.-最后一个,你现在可以像往常一样在VC中推送
[navigationController pushViewController:controller animated:YES];
不要犹豫,问你是否还有问题
答案 1 :(得分:2)
这样做
您为UITabBarController
分配了什么?我打赌UIViewController
?请尝试分配UINavigationController
而不是UIViewController
合成UINavigationController *navController
;
self.navController = [[UINavigationController alloc] init];
SomeViewController *viewController = [[SomeViewController alloc] initWithNibName:@"SomeViewController" bundle:nil];
self.navController.viewControllers = [NSArray arrayWithObject:viewController];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:[NSArray arrayWithObjects:
self.navController, nil]];
然后在您的操作表
上[self.navController pushViewController:v2 animated:YES];
编辑故事板
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
self.navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];
希望有所帮助
答案 2 :(得分:-2)
而不是self.window.rootViewController.navigationController
使用UINavigationController对象