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

我有一个简单的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;
}

目前看起来如下:

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

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

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

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

解决方法

我在主视图控制器(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.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...