簡體   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