从tableview返回时Swift清空数组

时间:2015-11-24 13:22:42

标签: ios swift uitableview

在第一个VC中,我有一个带有图像的数组(我选择了 - array.append),它通过tableview转到另一个VC,并且tableview读取该数组,一切正常,但是当从tableview返回到第一个VC时选择另一组图像(array.append)tableview用一组先前拾取的图像填充单元格,因为数组具有先前拾取的图像。我怎么能让那个tableview只记得最后添加的图片。

的ViewController

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var image1: UIImageView!
@IBOutlet weak var image2: UIImageView!
@IBOutlet weak var image3: UIImageView!

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!

var array = [UIImage]()
var array2 = [String]()

var number = 0

@IBAction func gamb(sender: UIButton) {

}

@IBAction func gamb2(sender: UIButton) {
    array.append(self.image2.image!)
    array2.append(self.label2.text!)
}

@IBAction func gamb3(sender: AnyObject) {
    array.append(self.image1.image!)
    array2.append(self.label1.text!)
}

@IBAction func gamb4(sender: UIButton) {
    array.append(self.image3.image!)
    array2.append(self.label3.text!)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {



    let destVC = segue.destinationViewController as! TableViewController
    let priljepak = self.array
    destVC.array = priljepak

    let priljepak2 = self.array2
    destVC.array2 = priljepak2


}
}

TableViewController

import UIKit

class TableViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

var array = [UIImage]()
var array2 = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return array.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 
    cell.imageView?.image = array[indexPath.row]
    cell.textLabel!.text = array2[indexPath.row]
    return cell
}
}

2 个答案:

答案 0 :(得分:2)

在第一个ViewController中,覆盖viewWillAppear。调用super并清空数组。

override func viewWillAppear(animated:bool) {
    super.viewWillAppear(animated)
    array = [UIImage]()
    array2 = [String]()
}

这会导致在返回第一个VC时删除任何选择。

答案 1 :(得分:1)

将以下覆盖插入ViewController:

override func viewWillAppear(animated: Bool){
    super.viewWillAppear(animated)

    array.removeAll()
    array2.removeAll()

}

当TableViewController被解除时,这将清理第一个视图控制器中的数组。