[英]How to get the value of the variable that is assigned in a closure (Swift)
[英]Swift: variable gets value assigned in the wrong order
我可能失去了一些东西基本在这里,但我有两个ViewControllers
称为ListController
(开始VC)和ExamplesController
和一个变量叫selectedCell
是在宣布ListController
那么它的值在改变ListController
通过tableView
didSelectRowAt indexPath
功能基于行的用户点击。 当用户点击一个单元格时,将显示ExamplesController
(通过IB中的segue),但是直到我回到ListController
, selectedCell
的值才会更改。 因此,现在执行的顺序是:
selectedCell
的值初始化为0用户点击一个单元格(假设索引3)
ExamplesController
标题为0用户回到
ListController
selectedCell
的值分配为3
这是代码的简化版本。
var selectedCell = 0
class ListController: UIViewController, UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedCell = indexPath.row
print("Tapped on \(selectedCell)")
}
}
class ExamplesController: UIViewController{
@IBOutlet weak var chapterTitle: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
chapterTitle.text = "\(chapterTitles[selectedCell])"
}
}
有什么想法我做错了吗?
您需要从VC本身而不是从单元格钩住segue,并在didSelectRowAt
内部使用
self.performSegue(withIdentifer:"SegueName",sender:indexPath.row)
func prepare(for segue: UIStoryboardSegue,sender: Any?) {
if segue.identider == "SegueName" {
let des = segue.destination as! ExampleVC
des.selectedCell = sender as! Int
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.