2011-12-09 10 views
2

私のiPadアプリは、標準のUISplitViewControllerを使用します。 Iportraitモードで表示に切り替えるときにwillHideViewControllerが呼び出されない

  • 回しが肖像画に、私はマスターリストのポップオーバーボタンを置けば私の問題は、ある - ファイン
  • これはself.splitViewController.delegate = newViewDetailViewController;
  • を設定 prepareForSegueを使用しています(detailviewを変更すること、ポップオーバーを経由して項目を選択します
  • 結果detailviewは今popoverbuttonが欠落している私が風景に回転させると、マスターリストが表示され、私は再び肖像画に回転させる場合は、popoverbuttonが表示されます

そう - 。。。どのように私はwillHideViewControllerが呼び出されます確保することができます0にたとえば、? 私は向きが何であるかを検出することができますが、私はまだhereが示唆したように、今、私はMultipleDetailView例りんごを以下の午前ため

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController

に必要barbuttonitemとpopovercontrollerを必要としています。

しかし、私も複数のMasterControllersを持っているので、popoverbuttonアイテムへのポインタ(静的)を格納し、masterviewコントローラのレベルを押すたびに設定するのは本当に面倒です。

うまくいけば、誰かが私は同じ問題に遭遇し、最終的に欠けていたものを考え出し

+0

私はこの同じ問題を抱えています、あなたはそれを把握しましたか? – Bek

+0

Appleからリンクされた例を使用して終了しました。私はpopoverbuttonが 'willHideViewController'メソッドで私に渡されることに気がついたので、複数のmastercontrollerで問題にはなりませんでした。 したがって、私の詳細ビューが実装する 'SubstitutableDetailViewController'プロトコルがあります。 – CracyD

+0

私は同じ問題を抱えています。私は 'SubstitutableDetailViewController'プロトコルを使用する同じAppleサンプルコードを使用しています。 View Controllerが以前にロードされ、表示されていないときに回転されたときに、(void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem'を受け取りません。 – avance

答えて

3

:-)この問題を解決する良い方法があります。 AppDelegateには初期化を行うためのコードが少しあります。 didFinishLaunchingWithOptionsメソッドにあります。ここでは、そこに行くのコードです:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
splitViewController.delegate = (id)navigationController.topViewController; 

彼らはすべての分割ビューコントローラを操作することが重要だが、最後の行は火にメソッドを取得するための最もラインで最後のものです。私は普遍的なアプリケーションを構築しており、これは欠けていました。それが私のiPhone側に影響しなかったことを保証するために、私はUI_USER_INTERFACE_IDIOMチェックでそれをラップしました。

+1

をUIユーザーインターフェイスのイディオムチェックにラップすると、生成されたAppDelegate.mコードの内容が、Xcodeのテンプレートを使用してマスターディテールアプリケーションが生成されたときに一致します。これを行わなければ、@ selector viewControllerにメッセージを送信しようとするとアプリがクラッシュします。 –

関連する問題