【问题标题】:How to allow the user to select a UIImagePickerController's source type?如何允许用户选择 UIImagePickerController 的源类型?
【发布时间】:2012-02-29 19:15:34
【问题描述】:

首先让我告诉你我想要做什么:

  1. 当用户点击一个按钮时,我想呈现一个UIPopoverController 和一个UINavigationController 作为它的contentViewController(这是在 iPad 上)
  2. 第一个推入UINavigationControllerUIViewController 将是一个自定义视图控制器,它有两个按钮:“拍照”和“从库中选择”。
  3. 触摸“拍照”按钮将setSourceType:UIImagePickerControllerSourceTypeCamera 上的UIImagePickerController 推入UINavigationController
  4. 触摸“从库中选择”按钮将setSourceType:UIImagePickerControllerSourceTypePhotoLibrary 上的UIImagePickerController 推入UINavigationController

我希望能够做到所有这些,并且能够允许用户在 UINavigationController 允许的情况下向后导航。

问题在于,由于UIImagePickerController 也是UINavigationController,我无法将其推入另一个UINavigationController,如#3 和#4 所述。

问题:

  1. 有没有办法让我使用UIImagePickerController 和在相机/照片库视图控制器之前推送的自定义视图控制器?
  2. 或者相反,有没有办法让我访问相机/照片库视图控制器,将它们推送到不同的UINavigationController
  3. 或者我在这里完全想念另一种方式?

【问题讨论】:

    标签: objective-c ios uinavigationcontroller uiimagepickercontroller uipopovercontroller


    【解决方案1】:

    添加以下代码(详细here)是最终为我解决了这个问题的原因。

    使用navigationController:willShowViewController:animated: 方法访问导航栏。

    然后使用此代码,您可以添加一个“取消”按钮。

    if ([navigationController isKindOfClass:[UIImagePickerController class]]) {
    
        UINavigationBar *bar = navigationController.navigationBar;
        UINavigationItem *top = bar.topItem;
    
        UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)];
        [top setLeftBarButtonItem:cancel];
    
    } else { 
    
        //do non imagePickerController things 
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      相关资源
      最近更新 更多