gpt4 book ai didi

ios - UIImagePickerController 和 UINavigationControllerDelegate 实现

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:44 24 4
gpt4 key购买 nike

我正在尝试使用 UIImagePickerController 从图库中挑选一张图片。

如果我的 View Controller 没有提到 UINavigationControllerDelegate。尝试设置 UIImagePickerController 委托(delegate)时,我会遇到以下错误。

enter image description here

但只需提及 UINavigationControllerDelegate 即可解决编译时错误。甚至没有实现任何额外的功能。

class ViewController: UIViewController ,UITextFieldDelegate 
,UIImagePickerControllerDelegate, UINavigationControllerDelegate

如果有人能向我解释其背后的合理性,那将非常可观。

我正在使用

Swift 4.2

Xcode 10.1

最佳答案

screenshot of UIImagePickerController declaration来自 documentation可以看到UIImagePickerController继承自UINavigationController。

screenshot of delegate declaration查看委托(delegate)声明,很明显它需要您确认 UIImagePickerControllerDelegateUINavigationControllerDelegate

为什么委托(delegate)需要你确认两种协议(protocol)?

UIImagePickerController 是一个系统接口(interface)。此类旨在按原样使用,不允许进行视觉修改。正如您从下面的屏幕截图中看到的那样,它带有一个导航栏。

一些 UIImagePickerControllerDelegate 方法,如 imagePickerControllerDidCancel(_:) 需要与 UINavigationController 通信才能接收事件。

这就是为什么 UIImagePickerController 必须验证您正在向 UINavigationControllerDelegate 确认。因此,您看到了错误。另请注意,UINavigationControllerDelegate 方法是可选的,因此您实际上不需要实现它们,这就是为什么当您提到 UINavigationControllerDelegate 时它只是简单地消除了错误。

screenshot of UIIMagePickerController

关于ios - UIImagePickerController 和 UINavigationControllerDelegate 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54988309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com