У меня есть контроллер представления, в котором пользователь может добавлять и удалять области, в настоящее время я добавляю несколько элементов в массив, а затем пытаюсь передать данные обратно. Он отправит первого участника, а остальные потеряются.
Я выяснил, сколько областей имеется в каждой точке, и я точно определил, когда данные передаются обратно в это представление. Он содержит только 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)
}