swift - 使用 UIImagePicker 在 UIImageView 中设置图像
问题描述
这就是我的代码目前的样子。我期望发生的是 profileImage (UIImageView) 来显示所选图像,因为它当前没有发生。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var profileImage: UIImageView!
let picker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
picker.sourceType = .photoLibrary
}
@IBAction func photoUploadPressed(_ sender: Any) {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
let myPickerController = UIImagePickerController()
myPickerController.delegate = self;
myPickerController.sourceType = .photoLibrary
self.present(myPickerController, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
selectedImage = image
profileImage.image = image
}
dismiss(animated: true, completion: nil)
}
}
目前图像选择器出现,但一旦选择它不会改变 UIImageView 的图像。
任何帮助都感激不尽。
解决方案
它按预期工作,您的代码中唯一的错误是您缺少 }photoUploadPressed(_ sender: Any)
并且您没有声明 selectedImage 并在里面使用它imagePickerController
工作代码
import UIKit
class ViewController: UIViewController , UIImagePickerControllerDelegate, UINavigationControllerDelegate{
let picker = UIImagePickerController()
var selectedImage: UIImage?
@IBOutlet weak var profileImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
picker.delegate = self
picker.sourceType = .photoLibrary
}
@IBAction func potoUploadPressed(_ sender: Any) {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
let myPickerController = UIImagePickerController()
myPickerController.delegate = self;
myPickerController.sourceType = .photoLibrary
self.present(myPickerController, animated: true, completion: nil)
}// It is missing in your code
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
selectedImage = image // You have not declared selectedImage
profileImage.image = image
}
dismiss(animated: true, completion: nil)
}
}
推荐阅读
- jsf - 为什么选择浏览器刷新按钮不会将我的 JSF 表单中的已编辑字段替换为来自服务器的值?
- python - Celery 无法使用 Django 2.1.1 找到任务或设置
- c++ - 除非声明并返回临时值,否则函数返回疯狂值?
- java - 如何在 Java 中使用“Scanner.hasNext”完成程序
- eclipse - 在 Xtext/MWE2 中导入 ecore 包/引用的资源
- php - 获取 og:image 的函数
- rxjs - rx.js 6.3 中的 queueScheduler 是同步的 - 如果我使用 queueScheduler,为什么这个示例不会导致 SO?
- python-3.x - Dataframe.update() 中的“join”参数
- r - Lubridate 无法正确解析包含工作日/月/日/年的日期
- sql - SQL中的运算符和子句有什么区别?