Почему мой делегат только передает Первого члена Массива? - PullRequest
0 голосов
/ 25 марта 2019

У меня есть контроллер представления, в котором пользователь может добавлять и удалять области, в настоящее время я добавляю несколько элементов в массив, а затем пытаюсь передать данные обратно. Он отправит первого участника, а остальные потеряются.

Я выяснил, сколько областей имеется в каждой точке, и я точно определил, когда данные передаются обратно в это представление. Он содержит только 1 члена.

Вот где массив объявлен в первом VC:

var areas = [areaProps(x: "New Area", y: "", z: "", a: "", b: "", p1: nil, p2: nil, p3: nil)]

Вот где оно сохраняется обратно:

func setArray(obj: [areaProps]) {
    areas = obj
    print("Set Array Sucessfully")
    print(areas.count)// contains the actual amount of objects that were created.
}

    override func willMove(toParent parent: UIViewController?) {
    super.willMove(toParent:parent)
    if parent == nil {
        print("Back Button Pressed")
        delegate?.setArray(obj: areaArray)
    }
}

И когда он передается обратно, вот как, и показывает, что здесь только 1 член:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToMainDetails"{
        let vc = segue.destination as! addOverview
        vc.overview = overview
    } else if segue.identifier == "goToServiceArea"{ // this is the segue
        let vc = segue.destination as! areaDetails
        vc.areaArray = areas
        print(" \(areas.count) Areas in Array ") // the array contains only 1 object
    } else {

    }
}

Вот класс делегата и где он инициализируется:

  var delegate:AreaDelegate?



protocol AreaDelegate {
    func setArray(obj: [areaProps])
}

Чтобы также уточнить, что здесь происходит, первый объект в массиве будет передан со своими отредактированными свойствами, однако дополнительный объект не пройдет. Например, если я изменю заголовок 1-й области во втором представлении, он будет проходить туда и обратно с этим новым заголовком.

Вот мой класс AreaProps, если он помогает

      var area : String
    var fix : String
    var surface : String
    var density : String
    var pic1 : UIImage?
    var pic2 : UIImage?
    var pic3 : UIImage?
    var notes : String

override init() {
    area = ""
    fix = ""
    surface = ""
    density = ""
    notes = ""
    pic1 = nil
    pic2 = nil
    pic3 = nil
}
convenience init(x : String, y : String, z : String, a : String, b : String, p1 : UIImage?, p2: UIImage?, p3: UIImage?) {

    self.init()

    let size : CGSize = CGSize(width: 150, height: 150)
        area = x
        fix = y
        surface = z
        density = a
        notes = b
        pic1 = p1
        pic1 = pic1?.imageResize(sizeChange: size)
        pic2 = p2
        pic2 = pic2?.imageResize(sizeChange: size)
        pic3 = p3
        pic3 = pic3?.imageResize(sizeChange: size)

    }
...