1
  1. 在我的窗口基础应用程序中,当我单击 tabbarcontroller 的第二项时,我需要从我的 appdelegate 导航到 editorview,它将显示一个带有三个选项的操作表。

  2. actionsheet 工作正常,如果您从标签栏中选择第二项,它将显示一个 actionsheet。

  3. 但是当我选择我的操作表的第一个选项时,我需要推送到另一个视图

  4. 我在 appdelegate 中声明了我的操作表。

  5. 我已经实现了 actionsheetdelegate

    • (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

该方法已触发,它可以显示我是否执行 nslog。但它不能推送到我想要的视图控制器。这是我的代码:

- (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 和导航控制器

4

3 回答 3

10

它充满了与此问题相关的错误答案。

我希望我的符合你的要求。

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

不要犹豫,问你是否还有问题

于 2014-01-16T11:40:05.220 回答
2

这样做

你分配 VC 是为了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"];

希望有帮助

于 2013-02-22T08:10:20.487 回答
-2

而不是这个 self.window.rootViewController.navigationController

使用 UINavigationController 对象

于 2013-02-22T08:01:17.163 回答