1

首先讓我來告訴你我想要做的事:如何讓用戶選擇一個UIImagePickerController的源類型?

  1. 當用戶點擊一個按鈕,我想提出一個UINavigationController一個UIPopoverControllercontentViewController(這是在iPad)
  2. 推入UINavigationController的第一個UIViewController將是一個自定義視圖控制器,它具有2個按鈕:「拍照」和「從庫中選擇」。
  3. 觸摸「拍照」按鈕,將setSourceType:UIImagePickerControllerSourceTypeCameraUIImagePickerController並將其推入UINavigationController
  4. 在談到UIImagePickerController從「選擇庫」按鈕,將setSourceType:UIImagePickerControllerSourceTypePhotoLibrary並將其推入UINavigationController

我希望能夠做到這一切,並能夠讓用戶在UINavigationController允許的情況下向後導航。

問題是,由於UIImagePickerController也是UINavigationController,所以我無法按#3和#4中所述將它推入另一個UINavigationController

問題:

  1. 有我的方式,使用UIImagePickerController用相機/照片庫視圖控制器推前一個自定義視圖控制器?
  2. 或者相反,有沒有辦法讓我訪問相機/照片庫視圖控制器,以將它們推入不同的UINavigationController
  3. 還是有另一種方式,我完全失蹤在這裏?

回答

0

添加下面的代碼(詳細here)是最終爲我解決了這個問題。

使用navigationController:willShowViewController:animated:方法來訪問navigationBar。

然後用這段代碼你可以添加一個「取消」按鈕。

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 

} 
相關問題