1

ビュー コントローラーをユニバーサル ストーリーボードを使用して分割ビュー コントローラーに変換し、同時に 2 つのビューを画面に表示します。これは iPad でのみ表示されます。iPhone では 1 つだけが表示されます。UIBarButtonItemビューコントローラーが1つだけ画面に表示されている場合にのみa が関連する状況があります。分割ビュー コントローラーの両方のビュー コントローラーが表示されているときに、このボタンを削除または非表示にします。

削除したいボタンがマスター ビュー コントローラーにあるため (実際には削除する必要があるマスターと詳細の両方にボタンがあります)、Regular w Regular のサイズ クラスを持たないため、サイズ クラスを使用してこれを行うことはできません。 h. Plus Interface Builder は s の「インストール済み」オプションを提供しませんUIBarButtonItem。アプリは iOS 7 でも実行されるため、コードでサイズ クラスを確認できません。

UIBarButtonItemマスター ビュー コントローラーと詳細ビュー コントローラーの両方が画面に表示されている場合、どのように削除/非表示にできますか? または、このボタンを IB に追加して、適切と思われるときにコードに追加することはできませんでしたが、両方のビュー コントローラーが画面に表示されるかどうかはどうすればわかりますか?

4

1 に答える 1

1

これは、iPhone および iPad 上の iOS 8 および iOS 7 でうまく機能する優れたソリューションです。Split View Controller があるかどうかを検出し、ある場合は折りたたまれているかどうかを確認するだけです。折りたたまれている場合は、画面上にビュー コントローラーが 1 つしか表示されていないことがわかります。その情報を知っていれば、必要なことは何でもできます。

//remove right bar button item if more than one view controller is on screen
if (self.splitViewController) {
    if ([UISplitViewController instancesRespondToSelector:@selector(isCollapsed)]) {
        if (!self.splitViewController.collapsed) {
            self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
        }
    } else {
        self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
    }
}
于 2014-08-22T16:27:54.513 に答える