Update/change array value from another view controller

落花浮王杯 提交于 2019-12-13 14:11:02

问题


Data Model

class DataImage {
    var userId: String
    var value: Double
    var photo: UIImage?
    var croppedPhoto: UIImage?

init(userId:String, value: Double, photo: UIImage?, croppedPhoto: UIImage?){
    self.userId = userId
    self.value = value
    self.photo = photo
    self.photo = croppedPhoto
   }

}

ViewController(tableView)

var photos = [DKAsset]() //image source
var datas = [DataImage]()
override func viewDidLoad() {
    super.viewDidLoad()
        self.loadDataPhoto()
}

func loadDataPhoto(){
  var counter = 0
    for asset in photos{
        asset.fetchOriginalImageWithCompleteBlock({ image, info in // move image from photos to datas

            let images = image
            let data1 = dataImage(userId: "img\(counter+1)", value: 1.0, photo: images, croppedPhoto: images)
            self.datas += [data1]
            counter++

        })
    }
}

from that code, let's say i have 5 datas:

  • dataImage(userId: "img1", value: 1.0, photo: images, croppedPhoto: images)
  • dataImage(userId: "img2", value: 1.0, photo: images, croppedPhoto: images)
  • dataImage(userId: "img3", value: 1.0, photo: images, croppedPhoto: images)
  • dataImage(userId: "img4", value: 1.0, photo: images, croppedPhoto: images)
  • dataImage(userId: "img5", value: 1.0, photo: images, croppedPhoto: images)

and i choose "img3" from view controller and successfully move it to cropviewController

CropViewController

var datasCrop: dataImage?
override func viewDidLoad() {
    super.viewDidLoad()
    if let datasCrop = datasCrop{
        // beforeImage.image = datasCrop.photo
        photoId.text = datasCrop.userId
        self.cropView.imageToCrop = datasCrop.photo

    }
}

@IBAction func handleCropButton(sender: UIButton)
{
    if let croppedImage = cropView.croppedImage()
    {
      croppedImage //theCropped img3's cropped image
    }
 }

in croppedViewController, i crop the "img3" image.

My question is, I want that cropped image to be update in datas["img3"] and move it back to viewController. how to do this?


回答1:


Look, you have the array datas. You can do the next:

var datas = [DataImage]()
class ViewController: UIViewController {
    override func viewDidLoad() {
        // fill your array with append or addObject
        print(datas) // without "self."
}



回答2:


You can use NSNotification or delegate methods to pass information between those two viewcontrollers Try this answer



来源:https://stackoverflow.com/questions/34915370/update-change-array-value-from-another-view-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!