1
  1. 私のウィンドウ ベース アプリケーションでは、tabbarcontroller の 2 番目の項目をクリックすると、appdelegate から editorview に移動する必要があり、3 つのオプションを含むアクションシートが表示されます。

  2. アクションシートは問題なく動作します。タブバーから 2 番目の項目を選択すると、アクションシートが表示されます。

  3. しかし、アクションシートの最初のオプションを選択したときに、他のビューにプッシュする必要があります

  4. appdelegate でアクションシートを宣言します。

  5. 私はすでにactionsheetdelegateを実装しています

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

メソッドは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 とナビゲーション コントローラーを埋め込んでいます

4

3 に答える 3

10

この問題に関連する悪い答えでいっぱいです。

私があなたの要件に合うことを願っています。

1.- 内部

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

// 1.- 最初に、navigationController をインスタンス化します。通常は rootviewcontroller

 UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

// 2.- 2 番目: ストーリーボードのインスタンス化 // MainStoryBoard とタグ付けされる場合があります。変更した場合は注意してください

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];

// 3.- ナビゲートする VC を 3 番目にインスタンス化 // 私の特定のケースでは、 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か? きっとUIViewControllerUINavigationController代わりに割り当ててみてください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 に答える