3

マスタービューを横向きと縦向きの両方で表示する方法について多くの人が情報を求めているのを見つけましたが、私がやろうとしているのは、デバイスの向きに関係なく正しいマスタービューを非表示にして、ナビゲーションバーボタンを使用してサイド。

デバイスの向きが変わったときに、マスタービューを非表示にするロジックがどこにある/実行されるかを誰かが教えてくれれば、私を大いに助けてくれるでしょう。Xcode に付属のテンプレート、iOS のマスター/詳細ビューを見ていて、これら 2 つの次のメソッドが AppDelegate.m ファイルで宣言されていることに気付きましたが、それらがどこから実行されているかを見つけることができないようです:

//Called when a button should be added to the nav bar for a view that is hidden
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController: (UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
   barButtonItem.title = NSLocalizedString(@"Master", @"Master");
   [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
   self.masterPopoverController = popoverController;
}

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    // Called when the view is shown again in the split view, invalidating the button and popover controller.
    [self.navigationItem setLeftBarButtonItem:nil animated:YES];
    self.masterPopoverController = nil;
}

すべての助けをいただければ幸いです。

4

1 に答える 1

9

UISplitViewController を実際に制御することはできません。マスター ビューは常に横向きビューで表示され、これを変更する方法はありません。

しかし、「Matt Gemmell は 'MGSplitViewController' と呼ばれる優れたカスタム splitViewController を作成しました。これは非常に簡単に実装でき、多くのコメントが寄せられており、通常の splitViewController には見られない多くの優れた機能が含まれています (ランドスケープ ビューでマスター ビューを非表示にする、分割の配置を変更する)。ランドスケープ ビューでは、実行時にユーザーがスプリットのサイズを流動的に変更できるようにするなど)。」

情報とデモ: http://mattgemmell.com/2010/08/03/mgsplitviewcontroller-updated/

ソースへ直接: https://github.com/mattgemmell/MGSplitViewController/

-=-=-=-=-=-=-=-=-=-=-=-

私はこれを以前に同様の(しかし異なる)質問に投稿しましたが、同じ答えがここにあります:

iPadのUiSplitviewcontrollerでマスタービューを非表示にする方法

-=-=-=-=-=-=-=-=-=-=-=-

アップデート:

iOS 5.0 以降では、横向きでマスター ビューを非表示にする機能がついに追加されました。

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return YES; 
}

参考: iPadで縦長に隠れないsplitViewController

于 2012-06-19T20:36:13.033 に答える