我的ViewOne
中有一个数组,通过ViewTwo
函数传递给prepareForSegue
。
当我删除ViewTwo
中数组的数据并使用导航控制器上的后退按钮或向右滑动返回时,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)")
}
}
}
视图二:
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)。
最佳答案
在Swift中,数组是值类型而不是引用类型(请参见Apple Developer Blog entry),因此当您将其“传递”给view2时,实际上只是在复制。View2修改副本,但原始副本保持不变。
关于ios - 回到UINavigationController时是否有如prepareForSegue之类的东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34274055/