繁体   English   中英

从TableView返回时的Swift清空数组

[英]Swift Emptying array when returning from tableview

在第一个VC中,我有一个包含图像的数组(我选择了-array.append),它通过tableview进入prepareforsegue到另一个VC,tableview读取该数组,并且一切正常,但是当从tableview回到第一个VC来选择另一个集合时的图像(array.append)表视图使用一组先前选择的图像填充单元格,因为array具有先前选择的图像。 我如何才能使该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
}
}

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

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

返回第一个VC时,将删除所有选择。

将以下替代项插入到ViewController中:

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

    array.removeAll()
    array2.removeAll()

}

关闭TableViewController时,这将清理第一个视图控制器中的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM