Swift 2: Обновление словаря UIImage с помощью UIImage () var от UIImagePicker

У меня есть два ViewController. ViewController#1 содержит UIImagePicker и ViewController #2 содержит переменную словаря UIImage с ключом. Я хотел бы обновить массив словаря с переменной UIImage (var newImage = UIImage ()), которую я передал из ViewController#1.Массив ожидает строку, поэтому я попытался преобразовать массив UIImage в строку. Я также подтвердил, что изображение не повезло.Есть идеи?

ViewController#1:

  class ViewController: UIViewController,UINavigationControllerDelegate,UIImagePickerControllerDelegate {

    let imagePicker = UIImagePickerController()
    var images = [UIImage]()
    var testimage = UIImage()

    @IBOutlet weak var beaconOne: UITextField!
    @IBOutlet weak var beaconTwo: UITextField!
    @IBOutlet weak var backImage: UIImageView!
    @IBOutlet weak var majorID2: UITextField!

    @IBAction func pickPhoto(sender: UIBarButtonItem) {

        imagePicker.allowsEditing = true
        imagePicker.modalPresentationStyle = .Popover
        imagePicker.sourceType = .PhotoLibrary
        imagePicker.delegate = self

        self.presentViewController(imagePicker, animated: true, completion: nil)

    }

    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage pickedimage: UIImage, editingInfo: [String : AnyObject]?) {

        testimage = pickedimage
        self.dismissViewControllerAnimated(true, completion: nil)
        print(images)


    }



    override func viewDidLoad() {
        super.viewDidLoad()



        }


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let planVC = segue.destinationViewController as! PlanagramViewController

        planVC.newImage = testimage


    }


}




ViewController#2:

//
//  ViewController.swift
//  BeaconTest
//
//  Created by Apple on 5/6/16.
//  Copyright © 2016 Apple. All rights reserved.
//
// Uses CoreLocation Framework



import UIKit
import CoreLocation


class PlanagramViewController: UIViewController,CLLocationManagerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

    @IBOutlet weak var imageView: UIImageView!

    @IBOutlet weak var testImageView: UIImageView!


    var newImage = UIImage()
    var beaconImages = [51098: UIImage(named: "Plan_P"),21714: UIImage(named: "Plan_M")]


    override func viewDidLoad() {
        super.viewDidLoad()

        let newvcMajorID = Int(vcMajorID1)
        beaconImages.updateValue(UIImage(named: "Plan_P"), forKey: newvcMajorID!)

        let newvcMajorID2 = Int(vcMajorID2)
        beaconImages.updateValue(UIImage(named: "Plan_M"), forKey: newvcMajorID2!)




    }


}

1 ответ

  1. Вот что вы должны сделать . Захватите (в коде)контроллер вида планограммы из раскадровки пользовательского интерфейса и отправьте изображение на новое изображение, а затем в контроллере вида № 2 просто используйте это значение.

    посмотреть контроллер #2

    import UIKit
    import CoreLocation
    
    
    class PlanagramViewController: UIViewController,CLLocationManagerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
    
    
        @IBOutlet weak var imageview: UIImageView!
    
        @IBOutlet weak var testimageview: UIImageView!
        var newImage : UIImage?
        var beaconImages = [51098: UIImage(named: "Image"),21714: UIImage(named: "Image")]
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            beaconImages.updateValue(newImage, forKey: 51098)
    
    
            beaconImages.updateValue(newImage, forKey: 21714)
    
            imageview.image = beaconImages[21714]!
            testimageview.image = beaconImages[51098]!
    
    
    
    
        }
    
    
    }
    

    посмотреть контроллер #1
    просто измените функцию ниже и удалите все из метода prepare for segue .

     func imagePickerController(picker: UIImagePickerController, didFinishPickingImage pickedimage: UIImage, editingInfo: [String : AnyObject]?) {
    
            testimage = pickedimage
    
            self.dismissViewControllerAnimated(true, completion: nil)
            images.append(testimage)
               let        planVC = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("planagram") as? PlanagramViewController
         planVC?.newImage = testimage
            self.presentViewController((planVC)!
                , animated: true, completion: nil)
    
        }