我在基于 UISplitViewController
的应用程序中呈现模态视图 Controller 。我已将默认的详细 View 替换为 UINavigationController
。
在我的 UINavigationController
中,我实现了一些方法来在左上角显示 Split View Controller 的“主”按钮。问题是,当设备方向发生变化而模态视图可见时,该按钮不会从我的导航 Controller 的主视图中消失。
可能导致此问题的原因是什么?
编辑:
我已将按钮的模板逻辑移动到 UINavigationController 的子类中。问题是,当 visibleViewController 呈现一个 modalViewcontroller
时,它 变成了 visibleViewController
。因此,出于某种原因,我的代码无法正确删除按钮。这是我的代码:
代码:
#pragma mark - Split view support
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc{
barButtonItem.title = NSLocalizedString(@"Menu", @"");
//
// TODO: Handle cases where there is
// a modal view controller that is
// being shown to the user.
//
[((UIViewController *)[self.viewControllers objectAtIndex:0]).navigationItem setLeftBarButtonItem:barButtonItem];
self.popoverController = pc;
}
// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem{
[self.visibleViewController.navigationItem setLeftBarButtonItem:nil];
[self.popoverController dismissPopoverAnimated:YES];
self.popoverController = nil;
}
//
// Preserve navigation items across detail
// view loads in portrait mode.
//
- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated{
UIBarButtonItem *barItem = nil;
if (self.visibleViewController.navigationItem.leftBarButtonItem != nil) {
barItem = self.visibleViewController.navigationItem.leftBarButtonItem;
}
[super setViewControllers:viewControllers animated:animated];
if (barItem != nil) {
[self.visibleViewController.navigationItem setLeftBarButtonItem:barItem];
}
}
最佳答案
我认为不可能使用 SplitViewController 并在导航项中显示主视图的按钮。 UISplitViewControllerDelegate 专门设计用于与 UIBarButtonItem 一起使用,您可能必须实现自定义弹出 Controller 才能使其正常工作。
关于iphone - 修改呈现模态视图的 View Controller 的 navigationItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481749/