Следующий код позволяет пользователю выбрать изображение из галереи или сделать снимок и отобразить его в ViewController через ImageView. Я хочу сделать это, чтобы передать изображение, которое было отобрано или выбрано в галерее, и передать его другому ViewController, которому он будет отображаться в ImageView. Идеально после того, как изображение будет выбрано или отображено, ViewController немедленно переключится на второй ViewController и отобразит изображение в ImageView.Как перенести изображение в другой ViewController и отобразить его в ImageView?
Как это можно достичь? Благодарю.
import Foundation
import UIKit
import MobileCoreServices
import AssetsLibrary
import AVFoundation
import SystemConfiguration
class ViewController: UIViewController, UITextViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UITextFieldDelegate, UIPopoverControllerDelegate, UIAlertViewDelegate {
var controller = UIImagePickerController()
var assetsLibrary = ALAssetsLibrary()
var selectedImage = UIImageView()
private var image: UIImage? // THIS ONE
@IBOutlet weak var btnClickMe: UIButton!
@IBOutlet weak var imageView: UIImageView!
var picker:UIImagePickerController?=UIImagePickerController()
var popover:UIPopoverController?=nil
override func viewDidLoad() {
super.viewDidLoad()
picker!.delegate=self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func btnImagePickerClicked(sender: AnyObject)
{
let alert:UIAlertController=UIAlertController(title: "Choose Image", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
let cameraAction = UIAlertAction(title: "Camera", style: UIAlertActionStyle.Default)
{
UIAlertAction in
self.openCamera()
}
let gallaryAction = UIAlertAction(title: "Gallery", style: UIAlertActionStyle.Default)
{
UIAlertAction in
self.openGallary()
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel)
{
UIAlertAction in
}
// Add the actions
picker?.delegate = self
alert.addAction(cameraAction)
alert.addAction(gallaryAction)
alert.addAction(cancelAction)
// Present the controller
if UIDevice.currentDevice().userInterfaceIdiom == .Phone
{
self.presentViewController(alert, animated: true, completion: nil)
}
else
{
popover=UIPopoverController(contentViewController: alert)
popover!.presentPopoverFromRect(btnClickMe.frame, inView: self.view, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
}
}
func openCamera()
{
if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
{
picker!.sourceType = UIImagePickerControllerSourceType.Camera
self .presentViewController(picker!, animated: true, completion: nil)
}
else
{
openGallary()
}
}
func openGallary()
{
picker!.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
if UIDevice.currentDevice().userInterfaceIdiom == .Phone
{
self.presentViewController(picker!, animated: true, completion: nil)
}
else
{
popover=UIPopoverController(contentViewController: picker!)
popover!.presentPopoverFromRect(btnClickMe.frame, inView: self.view, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
}
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
picker .dismissViewControllerAnimated(true, completion: nil)
imageView.image=info[UIImagePickerControllerOriginalImage] as? UIImage
image = imageView.image!
performSegueWithIdentifier("TEST", sender: self)
}
func imagePickerControllerDidCancel(picker: UIImagePickerController)
{
print("picker cancel.")
}
}
Вот мой второй ViewController
import UIKit
class ViewController2: UIViewController {
var Image = UIImage()
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = Image
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Я обновил вопрос и код.Я внедрил предложенный вами код и все еще не могу заставить его работать. Когда я выбираю изображение или беру изображение, ViewController не переходит ко второму, и изображение не появляется на втором контроллере представления в ImageView. Я правильно установил идентификатор, но все равно не повезло. –
Ваша ошибка в том, что вы создаете IBOutlet UIImage вместо UIImageView. '@IBOutlet var image: UIImage!', Когда это должно быть '@IBOutlet var imageView: UIImageView!'. Также в 'override func viewDidLoad()' вам нужно установить свойство изображения UIImageView следующим образом. 'imageView.image = selectedImage'. – dava
@dave Я сделал это, но все же не повезло, segue не инициализирует поэтому, почему он не переключает представления. Я правильно настроил все и обновил код выше. Я пришлю вам ссылку для скачивания. –