我有一个视图控制器,用户可以在其中添加和删除区域,当前我将向数组添加多个成员,然后尝试将数据传回。它将发送第一个成员,其余成员将迷路。
我已经确定了每个点有多少个区域,并确定了数据何时传递回该视图中,它只有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)
}