2016-05-28 11 views
0

Ich habe zwei ViewControllers. ViewController # 1 enthält den UIImagePicker und ViewController # 2 enthält die UIImage-Dictionary-Variable mit Key. Ich möchte das Wörterbucharray mit der Variable UIImage (var newImage = UIImage()) aktualisieren, die ich von ViewController # 1 übergeben habe. Das Array erwartet eine Zeichenfolge, daher habe ich versucht, das UIImage-Array in eine Zeichenfolge zu konvertieren. Ich habe auch bestätigt, dass das Bild kein Glück. Irgendwelche Ideen?Swift 2: Update UIImage Dictionary mit UIImage() var von UIImagePicker

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!) 




    } 


} 
+0

Nicht ganz sicher mit dem, was Sie erreichen möchten, möchten Sie das Bild bereits im Wörterbuch für einen bestimmten Schlüssel gespeichert ändern. –

+0

Ja. Ich möchte die Bilder "Plan_P" und "Plan_M" im Array für die Variable var newImage = UIImage(), die ich in ViewController # 2 deklariert habe, ersetzen. –

Antwort

0

Hier ist, was Sie tun sollten. Greifen Sie (in Code) den Planogram-View-Controller von ui story board und senden Sie das Bild an ein neues Bild und verwenden Sie dann im View-Controller # 2 einfach diesen Wert.

View-Controller # 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]! 




    } 


} 

View-Controller # 1 einfach die unten Funktion ändern und entfernen alles von der für segue Verfahren vorzubereiten.

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) 

    }