【发布时间】:2014-01-06 16:14:27
【问题描述】:
我有一个使用情节提要设置的主细节 iPad 界面,以在细节视图控制器上提供替换转场。这可以很好地替换细节控制器,但是在某些情况下缺少显示主控制器的条形按钮。
如果我在纵向进行转场,则条形按钮将丢失,因为从未调用过 willHideViewController: 委托方法。当从主控调用prepareForSegue: 时,我正在将委托设置为新的细节控制器。
当按钮丢失时,我可以将 iPad 旋转到横向,然后再转回纵向,然后按钮就会出现。
在prepareForSegue:
UINavigationController *nav = [segue destinationViewController];
UIViewController *destinationViewController = nav.topViewController;
if ([destinationViewController conformsToProtocol:@protocol(UISplitViewControllerDelegate)]) {
self.splitViewController.delegate = destinationViewController;
}
else {
self.splitViewController.delegate = nil;
}
在细节控制器中:
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"MasterButton", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
【问题讨论】:
-
我刚遇到这个。从情节提要加载详细视图后,似乎没有重新调用上述方法(带有没有主按钮的新工具栏,并且没有重新调用这些委托方法。我没有解决方案这还没有,但如果你找到了,请分享/回答你自己的问题。
标签: ios objective-c ipad uisplitviewcontroller master-detail