我的ViewOne
中有一个数组,我使用ViewTwo
函数传递给prepareForSegue
。
当我在ViewTwo
中删除数组的数据并返回NavigationController上的后退按钮或向右滑动时,ViewOne
中的数组仍然包含所有数据但不知道我删除了一些东西。
这个问题有解决办法吗?
ViewOne:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "submitSegue") {
let shoppingCart = segue.destinationViewController as! ShoppinCartScreen;
if(artikel != nil) {
shoppingCart.alleArtikel = alleArtikel
print("Test: \(artikel?.artikelnummer)")
}
}
}
ViewTwo:
var alleArtikel = [Artikel]()
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return alleArtikel.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ShoppingCartScreenCell", forIndexPath: indexPath) as!ShoppingCartScreenCell
let eintrag = alleArtikel[indexPath.row]
cell.previewImage.image = eintrag.foto
cell.artikelNummer.text = eintrag.artikelnummer
return cell
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if(editingStyle == .Delete) {
alleArtikel.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
我有一个主视图(ViewOne)和一个TableView(ViewTwo)。
答案 0 :(得分:0)
在Swift中,数组是值类型而不是引用类型(请参阅Apple Developer Blog entry),因此当您通过'它来查看2你真的只是制作副本。 View2修改副本但原始文件保持不变。
答案 1 :(得分:0)
在返回时不使用prepareForSegue
方法,而我无法知道,只需运行viewWillDisappear
函数即可。基本上这是视图消失时的viewDidLoad
函数。当您离开视图时,它将在您执行segue时运行。
示例:
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
print("the view is hidden")
}