我有一个简单的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应用程序一样。
我发现了一些与此问题相关的问题,但他们并没有创建SplitView,就像我只是在Storyboard中拖动它并编写几行代码一样,所以不要将它标记为重复或类似的东西
注意:请不要建议使用MGSplitViewController或任何其他第三方库。提前谢谢。
MasterViewController嵌入在导航控制器中。虽然DetailViewController上面有一个手动添加的顶栏,因为当在SplitView中添加全部内容时,它会丢失顶部的导航栏。我所知道的是,我可以在DetailView的顶部栏上创建一个IBAction按钮,但不知道如何触发隐藏和取消隐藏功能。
答案 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。