添加到 UIPopoverController 时,UIImagePickerController 中缺少导航按钮
Posted
技术标签:
【中文标题】添加到 UIPopoverController 时,UIImagePickerController 中缺少导航按钮【英文标题】:Navigation buttons missing from UIImagePickerController when added to UIPopoverController 【发布时间】:2011-11-16 14:10:57 【问题描述】:遇到了一个奇怪的问题。当我将 UIImagePickerController 添加到我的 UIPopoverController 时,通常会在导航栏中显示的取消按钮丢失了。
我曾尝试将 UIImagePickerController 子类化并自己在导航栏上添加一个导航按钮,但它没有显示出来。
如果我选择我的相机胶卷,后退按钮会自动添加,但取消按钮仍然缺失。
有人知道是什么原因造成的吗?
这是我使用的代码。请注意,_popOver 是我的 UIPopoverController 的实例。
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[_popOver setContentViewController:picker animated:YES];
【问题讨论】:
【参考方案1】:我已经尝试过这段代码,现在我认为这是默认行为。 UIImagePickerController 通常呈现为模态视图控制器,取消按钮的目的是关闭它。当您将 UIImagePickerController 放入 UIPopoverController 时,取消按钮变得毫无意义。要关闭它,您只需点击任意位置(UIPopoverController 视图除外)。如果你想在 UIPopoverController 将/确实被解雇时访问 UIImagePickerController 使用 UIPopoverControllerDelegate 方法:
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
UIImagePickerController *imagePicker = (UIImagePickerController*)popoverController.contentViewController;
return YES;
【讨论】:
您可能是对的,但它肯定会限制使用此组件的设计。在我的应用程序中,关闭弹出窗口不是一种替代方法,因为在启动图像选择器之前,您必须在导航控制器内的多个菜单中导航。因此,如果您取消选择器,您很自然会回到启动选择器之前的状态。从逻辑上讲,关闭弹出框会带您回到导航控制器的根目录,或者可能回到您之前关闭之前所在的同一页面。以上是关于添加到 UIPopoverController 时,UIImagePickerController 中缺少导航按钮的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 上的 UIPopoverController 和键盘导致奇怪的动画
Swift - iOS 8 中的 UIPopoverController
使用 ABNewPersonViewController 时关闭 UIPopoverController
UIPopoverController 顶部的 UIBotton 消失