У меня сложилось впечатление, что использование ViewController аналогично: на раскадровке мы перетаскиваем UIViewController на сцену, а затем меняем его тип класса, например, в UIImagePickerController. (Я хочу сделать отдельную сцену для выбора изображений)
Но позже я обнаружу, что UIImagePickerController
не будет работать, если я непосредственно подкласс:
class TestUIImagePickerController: UIImagePickerController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.sourceType = .photoLibrary
self.delegate = self
// self.present(self, animated: true) // either comment it out or not, both way won't work.
}
Но это работает, только если я положу UIViewController
на раскадровку, а затем создаю UIImagePickerController
программно:
class SecondTestUIImagePickerController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let picker = UIImagePickerController()
picker.sourceType = .photoLibrary
picker.delegate = self
self.present(picker, animated: true)
}
Могу ли я узнать, пропустил ли я что-нибудь в первом примере использования? И нужно ли создавать UIImagePickerController
программно, а затем представлять его через контроллер представления агента (UIVIewController)?