将图像从弹出窗口发送到父视图
sending image from popover to parent view
我有一个视图将另一个视图控制器作为弹出窗口打开
弹出窗口使用图像选择器并在 imageView 中显示所选图像。
父级也有一个 imageView,带有一个名为 profiler 的 IBoutlet,在关闭弹出窗口之前,我希望父级视图获得所选图像。
我将如何访问父视图并将图像从弹出窗口发送到父视图
下面是来自弹出视图控制器的代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
picker.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: - Delegates
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2
myImageView.contentMode = .scaleAspectFit //3
myImageView.image = chosenImage //4
myImageView.layer.borderWidth = 1
myImageView.layer.masksToBounds = false
myImageView.layer.borderColor = UIColor.black.cgColor
myImageView.layer.cornerRadius = myImageView.frame.height/4
myImageView.clipsToBounds = true
dismiss(animated:true, completion: nil) //5
}
感谢您提供的任何帮助
你应该创建协议
protocol PopOverImagePickerDelegate: NSObjectProtocol {
func didSelect(image: UIImage)
}
在您的 PopoverViewController
中创建
weak var delegate: PopOverImagePickerDelegate?
在从 ParentViewController
导航到 PopoverViewController
之前设置
popOverViewController.delegate = self
然后创建
extension ParentViewController: PopOverImagePickerDelegate {
func didSelect(image: UIImage) {
//do stuff
}
}
当在 PopoverViewController
中选取图像时,只需调用
self.delegate?.didSelect(image: image)
使用回调闭包,比delegate/protocol
省力
在弹出视图控制器中添加一个属性
weak var callback : ((UIImage) -> ())?
在didFinishPickingMediaWithInfo
之前dismiss
调用
callback?(chosenImage)
在创建控制器后的父视图控制器中添加
popoverViewController.callback = { image in
// do something with the image
}
popoverViewController
是弹出视图控制器实例
我有一个视图将另一个视图控制器作为弹出窗口打开
弹出窗口使用图像选择器并在 imageView 中显示所选图像。 父级也有一个 imageView,带有一个名为 profiler 的 IBoutlet,在关闭弹出窗口之前,我希望父级视图获得所选图像。
我将如何访问父视图并将图像从弹出窗口发送到父视图
下面是来自弹出视图控制器的代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
picker.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: - Delegates
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2
myImageView.contentMode = .scaleAspectFit //3
myImageView.image = chosenImage //4
myImageView.layer.borderWidth = 1
myImageView.layer.masksToBounds = false
myImageView.layer.borderColor = UIColor.black.cgColor
myImageView.layer.cornerRadius = myImageView.frame.height/4
myImageView.clipsToBounds = true
dismiss(animated:true, completion: nil) //5
}
感谢您提供的任何帮助
你应该创建协议
protocol PopOverImagePickerDelegate: NSObjectProtocol {
func didSelect(image: UIImage)
}
在您的 PopoverViewController
中创建
weak var delegate: PopOverImagePickerDelegate?
在从 ParentViewController
导航到 PopoverViewController
之前设置
popOverViewController.delegate = self
然后创建
extension ParentViewController: PopOverImagePickerDelegate {
func didSelect(image: UIImage) {
//do stuff
}
}
当在 PopoverViewController
中选取图像时,只需调用
self.delegate?.didSelect(image: image)
使用回调闭包,比delegate/protocol
省力在弹出视图控制器中添加一个属性
weak var callback : ((UIImage) -> ())?
在
调用didFinishPickingMediaWithInfo
之前dismiss
callback?(chosenImage)
在创建控制器后的父视图控制器中添加
popoverViewController.callback = { image in // do something with the image }
popoverViewController
是弹出视图控制器实例