5

AppDelegateのNavigationControllerに関する問題があります。私はこのようになりますこれは、ストーリーボードを使用しています:ストーリーボードを使用してAppDelegateでカスタムNavigationControllerを使用する方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
//... 
} 

:プッシュ通知を使用した結果

Storyboard

、私は私のAppDelegateファイルに以下の機能を持っています通知が到着しました。 "Detail View"を初期化したい - コントローラとしてIDを必要とするコントローラ。このIDはペイロードの一部なので、didReceiveRemoteNotificationに存在します。

私はfollwingにしたい:

DetailView *detail = [storyboard instantiateViewControllerWithIdentifier:@"detail"]; 

detail.conversationID = theID; 

[self.navigationController pushViewController:detail animated:YES]; 

この時点で私の質問は:どのように私はナビゲーションコントローラを得ることができますか?私は "getNavigationControllerByIdentifier"のような関数を探しましたが、何も見つかりませんでした。ナビゲーションバーが表示されないので、詳細ビューコントローラを直接インスタンス化することはできません。

私はあなたが私が何を意味するか理解してほしい - あなたは私のアプローチはcompletly間違っていると思うなら、私を修正してください; O)

ちょうど別の小さな情報:それは詳細表示コントローラで戻るボタンが行くことを私のために重要ではありませんTable Viewに戻ってください。「Load Table View」ボタンを使ってコントローラーにリンクすれば十分です。

ありがとうございました!

答えて

8

UINavigationControllerUIViewControllerであり、ストーリーボードで識別子を割り当てることもできます。

を使用してUINavigationControllerを作成し、それをルートビューコントローラーにします。すべての中間コントローラをコードでインスタンス化し、ナビゲーションコントローラのviewControllersプロパティを変更して、適切なナビゲーションスタックを設定する必要があります。このようにして、アプリが詳細ビューに起動すると、あたかもインターフェースを介して手作業でプッシュしたかのように戻ることができます。

+0

ありがとうございます。今それは明確で、うまくいく:-)(賞金は10時間でしか使えないので、心配しない;)) –

4

ウィンドウオブジェクトにrootViewControllerを使用できます。

UIViewController *rootViewController = self.window.rootViewController; 
// You now have in rootViewController the view with your "Hello world" label and go button. 

// Get the navigation controller of this view controller with: 
UINavigationController *navigationController = rootViewController.navigationController; 

// You can now use it to push your next view controller: 
DetailViewController *detail = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"detail"]; 
detail.conversationID = theID; 
[navigationController pushViewController:detailViewController animated:YES]; 
関連する問題