![](/img/trans.png)
[英]Swift 5: index out of range when returning the array count from tableView numberOfRowsInSection
[英]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.