在 UIImagePickerController 内的 UIBarButton 上添加系统摄像头

Adding System Camera on UIBarButton inside UIImagePickerController

如果您熟悉 .PhotoLibraryUIImagePickerController 屏幕,右侧有一个取消按钮。在左侧,我想添加一个可以在 XCode 库中找到的相机图标。

我的代码不起作用。

let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .PhotoLibrary
picker.allowsEditing = true

let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: picker, action: Selector("btnOpenCamera"))
picker.navigationItem.leftBarButtonItem = camera

presentViewController(picker, animated: true, completion: nil)

它可能会在代码执行期间将 navigationItem 重置为其他地方(例如在 viewDidLayoutSubviews 中)。

你可以尝试继承UIImagePickerController并重新实现

func viewWillAppear(animated:Bool) {
super.viewWillAppear(animated)

let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: , action:self Selector("btnOpenCamera"))//you can handle this with delegate if you want
self.navigationItem.leftBarButtonItem = camera
}

而不是使用继承的 class 而不是标准的 UIImagePickerController。希望对你有帮助。

参考这个post,从objective C解释为Swift。

我找到了问题的解决方案。此方法将在加载的视图控制器中执行我需要的任何自定义。

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {

    let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: Selector("btnOpenCamera"))
    viewController.navigationItem.leftBarButtonItem = camera
}