为什么我的代表只通过数组的第一个成员?

时间:2019-03-25 00:22:09

标签: ios swift delegates segue

我有一个视图控制器,用户可以在其中添加和删除区域,当前我将向数组添加多个成员,然后尝试将数据传回。它将发送第一个成员,其余成员将迷路。

我已经确定了每个点有多少个区域,并确定了数据何时传递回该视图中,它只有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])
}

还要澄清这里发生的情况,数组中的第一个对象将通过其已编辑的属性进行传递,但是其他对象将不会通过。例如,如果我在第二个视图中更改了第一个区域的标题,它将与该新标题来回传递。

如果有帮助,这是我的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)

    }

0 个答案:

没有答案