UISplitViewController在故事板中隐藏/取消隐藏MasterView

时间:2013-04-26 23:12:54

标签: ios objective-c xcode ipad uisplitviewcontroller

我有一个简单的iPad应用程序,带有一个带有tableview的MasterviewController和一个包含UIWebView的DetailViewController。然后我在我的Storyboard中拖放了一个SplitViewController,将它与我的Master和Detail控制器连接起来。在MasterViewController中我使用以下内容:

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

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

目前看起来如下:

enter image description here

一切都很好。 我想做的是使用DetailViewController左上角的按钮隐藏和取消隐藏MasterViewController,就像iPad Mail应用程序一样。

我发现了一些与此问题相关的问题,但他们并没有创建SplitView,就像我只是在Storyboard中拖动它并编写几行代码一样,所以不要将它标记为重复或类似的东西

注意:请不要建议使用MGSplitViewController或任何其他第三方库。提前谢谢。

MasterViewController嵌入在导航控制器中。虽然DetailViewController上面有一个手动添加的顶栏,因为当在SplitView中添加全部内容时,它会丢失顶部的导航栏。我所知道的是,我可以在DetailView的顶部栏上创建一个IBAction按钮,但不知道如何触发隐藏和取消隐藏功能。

1 个答案:

答案 0 :(得分: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。