【问题标题】:Update/change array value from another view controller从另一个视图控制器更新/更改数组值
【发布时间】:2016-04-27 04:53:15
【问题描述】:

数据模型

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++

        })
    }
}

从该代码中,假设我有 5 个数据:

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

并且我从视图控制器中选择“img3”并成功将其移动到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
    }
 }

croppedViewController 中,我裁剪“img3”图像。

我的问题是,我希望在 datas["img3"] 中更新裁剪后的图像并将其移回 viewController。如何做到这一点?

【问题讨论】:

  • 我懒得输入答案:D。但是您可以查看此链接stackoverflow.com/questions/5210535/…。它告诉你如何在视图控制器之间传递对象
  • 你有什么快速的来源吗? @t4nhpt
  • 请查看 Swift 链接:stackoverflow.com/questions/25589240/…
  • 您可以尝试使您的数组全局化并从任何地方访问它,或者您可以使用ViewController().yourArray访问它
  • @iamalizade 哦,所以我可以在“handleCropButton”中使用 ViewController().datas?我现在就去试试

标签: ios swift tableview


【解决方案1】:

您可以使用 NSNotification 或委托方法在这两个视图控制器之间传递信息 试试这个answer

【讨论】:

    【解决方案2】:

    看,你有数组datas。您可以执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多