我的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/

10-13 07:41