【发布时间】:2014-04-28 14:39:08
【问题描述】:
我正在使用普通的委托方法以纵向模式显示一个按钮,以这种方式显示/隐藏UITableView:
我在UITableViewController 中使用这个:
// Split View Controller
- (void)awakeFromNib
{
[super awakeFromNib];
self.splitViewController.delegate = self;
}
- (id <SplitViewBarButtonItemPresenter>)splitViewBarButtonItemPresenter
{
id detailVC = [self.splitViewController.viewControllers lastObject];
if (![detailVC conformsToProtocol:@protocol(SplitViewBarButtonItemPresenter)]) {
detailVC = nil;
}
return detailVC;
}
- (BOOL)splitViewController:(UISplitViewController *)svc
shouldHideViewController:(UIViewController *)vc
inOrientation:(UIInterfaceOrientation)orientation
{
return UIInterfaceOrientationIsPortrait(orientation);
}
- (void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
{
barButtonItem.title = @"Table of Data";
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
在我的DetailViewControllerS(多个)中,我正在使用
- (void)handleSplitViewBarButtonItem:(UIBarButtonItem *)splitViewBarButtonItem
{
NSMutableArray *toolbarItems = [self.toolbar.items mutableCopy];
if (_splitViewBarButtonItem) [toolbarItems removeObject:_splitViewBarButtonItem];
if (splitViewBarButtonItem) [toolbarItems insertObject:splitViewBarButtonItem atIndex:0];
self.toolbar.items = toolbarItems;
_splitViewBarButtonItem = splitViewBarButtonItem;
}
- (void)setSplitViewBarButtonItem:(UIBarButtonItem *)splitViewBarButtonItem
{
if (splitViewBarButtonItem != _splitViewBarButtonItem) {
[self handleSplitViewBarButtonItem:splitViewBarButtonItem];
}
}
问题是,如果通过“替换 Segue”更改详细视图,则在新的 DetailViewController 中显示/隐藏 UITableView 的按钮会消失,除非我将 iPad 旋转到横向,然后再转回纵向!
或者即使我去另一个ViewController,它不应该显示按钮,然后回到我的主要DetailView,除非我旋转设备,否则按钮不会显示。
如果我处于纵向模式,我该如何解决它,使按钮始终出现??
【问题讨论】:
标签: ios objective-c uitableview uisplitviewcontroller