UIImagePickerController 是否必须在导航控制器中嵌入视图控制器?

Does UIImagePickerController have to have a view controller embedded in a navigation controller?

UIImagePickerController 委托是否必须是嵌入在导航控制器中的视图控制器?只是问,因为我希望用户能够从中 select 照片的视图控制器当前不在一个视图控制器中,我手动输入带有栏按钮项的导航栏。不得不将这些按钮的代码重新链接并重新粘贴到新按钮中只会很烦人,并且有点担心我可能不得不如何使用 segues 和诸如此类的东西更改我的代码。如果我只是给 UIImagePickerController 的委托一个 UINavigationControllerDelegate 最上面,那行得通吗,还是我必须将视图控制器嵌入导航控制器?

不,它不必嵌入 UINavigationController。您可以使 UIViewController sub-class 符合协议 UIImagePickerControllerDelegateUINavigationControllerDelegate,它会工作得很好。

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @objc func showImagePicker() {
        let picker = UIImagePickerController()
        picker.delegate = self
        // do other stuff...
        present(picker, animated: true)
    }
}