我正在编写一个具有UITableView的应用程序。我目前为表格中的单元格设置了一个segue设置:
var selectedRow = Int() //global variable so it can be used in both VCs
import UIKit
class TableViewController: UITableViewController {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "rowSelected", sender: Any?.self)
selectedRow = indexPath.row
}
}
segue工作正常。但是,在控制viewController
的swift文件中(仅用于更改标签的文本)不能正常工作。这是VC的代码:
override func viewDidLoad() {
super.viewDidLoad()
firstLabel.text = infoArray[selectedRow]
print(selectedRow)
}
infoArray设置正确,但标签并不总是更改为正确的文本...打印selectedRow返回不一致的数字...如果我点击第一个单元格它将返回0有时,但它也返回1, 3,2等...它似乎是随机的,并没有正确返回当前的int(因此标签文本没有正确设置)。这是为什么?
答案 0 :(得分:4)
您正在做的是不将信息从一个视图控制器传递到另一个视图控制器的方式。要传递信息,传递信息。实现prepare(for:sender:)
,而不是在全局中删除信息,您可以在准备时获取segue的目标视图控制器,并设置目标视图控制器的属性。