UIImagePickerController 和 UINavigationControllerDelegate 实现
UIImagePickerController and UINavigationControllerDelegate implementation
我正在尝试使用 UIImagePickerController
从画廊中挑选一张图片。
如果我的视图控制器没有提到 UINavigationControllerDelegate
。我将在尝试设置 UIImagePickerController
委托时遇到以下错误。
但仅提及 UINavigationControllerDelegate
即可解决编译时错误。甚至没有实现任何额外的功能。
class ViewController: UIViewController ,UITextFieldDelegate
,UIImagePickerControllerDelegate, UINavigationControllerDelegate
如果有人能给我解释一下背后的道理,那就太好了。
我正在使用
Swift 4.2
Xcode 10.1
UIImagePickerController 的委托定义为
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
所以你要设置的delegate必须符合UINavigationControllerDelegate。
UINavigationControllerDelegate 没有必填字段。所以你不需要实现任何函数或变量来符合它。因此,您的错误已解决。
道理很简单,如果你需要在显示 vc ( imagePicker ) 时进行监视,然后实现 UINavigationControllerDelegate
方法,那么它就会有意义,否则它就没用了,但它是强制性的
从documentation可以看出UIImagePickerController继承自UINavigationController
查看委托声明,很明显它需要您确认 UIImagePickerControllerDelegate
& UINavigationControllerDelegate
为什么delegate需要你确认两个协议?
UIImagePickerController
是系统界面。此 class 旨在按原样使用,不允许进行视觉修改。正如您从下面的屏幕截图中看到的那样,它带有一个导航栏。
一些 UIImagePickerControllerDelegate
方法如 imagePickerControllerDidCancel(_:)
需要与 UINavigationController
通信才能接收事件。
这就是为什么 UIImagePickerController
必须验证您正在向 UINavigationControllerDelegate
确认。因此,您看到了错误。另请注意 UINavigationControllerDelegate
方法是可选的,因此您实际上不需要实现它们,这就是为什么当您提到 UINavigationControllerDelegate
.
时它只是简单地消除了错误
我正在尝试使用 UIImagePickerController
从画廊中挑选一张图片。
如果我的视图控制器没有提到 UINavigationControllerDelegate
。我将在尝试设置 UIImagePickerController
委托时遇到以下错误。
但仅提及 UINavigationControllerDelegate
即可解决编译时错误。甚至没有实现任何额外的功能。
class ViewController: UIViewController ,UITextFieldDelegate
,UIImagePickerControllerDelegate, UINavigationControllerDelegate
如果有人能给我解释一下背后的道理,那就太好了。
我正在使用
Swift 4.2
Xcode 10.1
UIImagePickerController 的委托定义为
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
所以你要设置的delegate必须符合UINavigationControllerDelegate。
UINavigationControllerDelegate 没有必填字段。所以你不需要实现任何函数或变量来符合它。因此,您的错误已解决。
道理很简单,如果你需要在显示 vc ( imagePicker ) 时进行监视,然后实现 UINavigationControllerDelegate
方法,那么它就会有意义,否则它就没用了,但它是强制性的
UIImagePickerControllerDelegate
& UINavigationControllerDelegate
为什么delegate需要你确认两个协议?
UIImagePickerController
是系统界面。此 class 旨在按原样使用,不允许进行视觉修改。正如您从下面的屏幕截图中看到的那样,它带有一个导航栏。
一些 UIImagePickerControllerDelegate
方法如 imagePickerControllerDidCancel(_:)
需要与 UINavigationController
通信才能接收事件。
这就是为什么 UIImagePickerController
必须验证您正在向 UINavigationControllerDelegate
确认。因此,您看到了错误。另请注意 UINavigationControllerDelegate
方法是可选的,因此您实际上不需要实现它们,这就是为什么当您提到 UINavigationControllerDelegate
.