7

テーブルビューを備えたMasterviewControllerと、UIWebViewを含むDetailViewControllerを備えたシンプルなiPadアプリがあります。次に、ストーリーボードに SplitViewController をドラッグ アンド ドロップし、Master および Detail コントローラーに接続しました。MasterViewController では、次のものを使用しています。

- (void) awakeFromNib
{
    self.splitViewController.delegate = self;
}

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

現在、次のようになっています。

ここに画像の説明を入力

すべてがうまくいっています。私がやりたいことは、iPad メール アプリと同じように、DetailViewController の左上にあるボタンで MasterViewController を非表示および再表示することです。

この問題に関連するいくつかの質問を見つけましたが、ストーリーボードにドラッグして数行のコードを書くだけで、SplitView を作成していないので、重複などのマークを付けないでください。

注: MGSplitViewController やその他のサード パーティ ライブラリの使用はお勧めしません。前もって感謝します。

MasterViewController は、ナビゲーション コントローラー内に埋め込まれています。DetailViewController には手動でトップ バーが追加されていますが、SplitView にすべてが追加されると上部のナビゲーション バーが失われるためです。私が知っているのは、DetailView のトップバーに IBAction ボタンを作成できるが、非表示および再表示機能をトリガーする方法がわからないということです。

4

1 に答える 1

4

マスター ビュー コントローラー (TableController) で次のようにします。

#import "TableController.h"
#import "ViewController.h"

@interface TableController ()

@property (strong, nonatomic) NSArray * theData;
@property (strong, nonatomic) UIViewController * detailVC;

@end

@implementation TableController 


-(void)awakeFromNib {
   self.splitViewController.delegate = self;
   self.detailVC = self.splitViewController.viewControllers[1];
}

-(void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    NSMutableArray *itemArray = [self.detailVC.toolBar.items mutableCopy];
    [itemArray removeObject:barButtonItem];
    [self.detailVC.toolBar setItems:itemArray];
}


-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc {
    barButtonItem.title = @"Master";
    NSMutableArray *itemArray = [self.detailVC.toolBar.items mutableCopy];
    if (! itemArray) {
        itemArray = [NSMutableArray arrayWithObject:barButtonItem];
    }else{
        [itemArray insertObject:barButtonItem atIndex:0];
    }
    [self.detailVC.toolBar setItems:itemArray];
}

IB のツールバーを詳細コントローラーに追加し、IBOutlet、toolBar にしました。

于 2013-04-27T00:33:25.830 に答える