我正在學習目標C.現在我對UISplitViewController和顯示/隱藏主視圖按鈕很好奇。我看過很多教程,但我做錯了什麼,我不知道它是什麼。我的按鈕不隱藏主視圖。我在兩天內絕對打破了我的想法。現在我構建了這個示例項目來詢問您的建議。 在我的模式中我有:TabBarVC,SplitVC,TableViewVC和ViewVC。所有控制器都是我的習慣。 MyTabBarViewController首先來臨。我有與UISplitViewController選項卡。iOS:UISplitViewController顯示/隱藏主視圖按鈕不起作用
MySplitViewController.m
#import "MySplitViewController.h"
#import "MyTabBarViewController.h"
#import "MyDetailViewController.h"
@interface MySplitViewController()
@end
@implementation MySplitViewController
- (void)viewDidLoad {
[super viewDidLoad];
MyTabBarViewController *masterVC = [self.storyboard instantiateViewControllerWithIdentifier:@"myTableVC"];
MyDetailViewController *detailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"myDetailVC"];
NSArray *newViewControllersArray = [NSArray arrayWithObjects:masterVC, detailVC, nil];
self.viewControllers = newViewControllersArray;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
MyTableViewController.m
#import "MyTableViewController.h"
@interface MyTableViewController()
@end
@implementation MyTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.dataArray = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.dataArray count];
}
//configure the cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
cell.textLabel.text = [self.dataArray objectAtIndex:indexPath.row];
return cell;
}
@end
MyDetailViewController.h
#import <UIKit/UIKit.h>
@interface MyDetailViewController : UIViewController <UISplitViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UIBarButtonItem *showHideMasterVC;
@property (nonatomic, strong) UIPopoverController *popover;
@end
MyDetailViewController.m
#import "MyDetailViewController.h"
@interface MyDetailViewController()
@end
@implementation MyDetailViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
{
//Grab a reference to the popover
self.popover = pc;
}
-(void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
//Nil out the pointer to the popover.
_popover = nil;
}
@end
這是我的整個項目與故事板:MyProject
對不起,很多代碼,但請幫助我或我瘋了。謝謝! PS順便說一下,有可能在NavigationController之外顯示/隱藏主視圖按鈕,例如在某些視圖上? (無效)splitViewController(UISplitViewController *)svc willHideViewController和 - (void)splitViewController(UISplitViewController *)svc willShowViewController在iOS8中已棄用。
那麼有人可以糾正我的項目我應該怎樣解決我的問題?
嗨!對不起,我沒有明白你的觀點,我應該如何做到這一點,而不使用廢棄的方法? – user3742622 2015-02-24 21:15:00
您不需要棄用的方法。只需添加'self.navigationItem.leftBarButtonItem = self.splitViewController。displayModeButtonItem;'。 – SFF 2015-02-24 21:18:46
哇!它是如此容易!非常感謝!!! – user3742622 2015-02-24 21:25:11