7

我有一个简单的 iPad 应用程序,其中 MasterviewController 带有一个 tableview 和一个 DetailViewController 包含一个 UIWebView。然后我在我的 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 应用程序一样。

我发现了一些与这个问题相关的问题,但他们并没有像我一样简单地创建 SplitView,只需将它拖到 Storyboard 中并编写几行代码,所以不要将其标记为重复或类似的东西。

注意:请不要建议使用 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 回答