我有两个单元,都是从xib文件加载的。 cell1有一个标签,cell2有一个标签。在cellForRowAt中,当我加载cell2并希望将该变量传递给cell1时,我声明了一个变量。
我尝试过的解决方案
我试图存储本地var' importantVar '在一个名为' importantVarCapture '的全局变量中然后将cell1.cell1Label.text传递给全局变量,但是,由于cell1已经加载,因此失败。
所以简而言之,我希望以某种方式在我的cell2完成加载之后更新cell1并且“重要的变量”#39;已经宣布。
我创建了一个新的xCode项目来复制我的问题,代码如下:
class TableViewController: UITableViewController {
var importantVarCapture: String?
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "Cell1", bundle: nil), forCellReuseIdentifier: "Cell1")
tableView.register(UINib(nibName: "Cell2", bundle: nil), forCellReuseIdentifier: "Cell2")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell1 = tableView.dequeueReusableCell(withIdentifier: "Cell1") as? Cell1
cell1?.cell1Label.text = self.importantVarCapture
return cell1!
} else {
let importantVar = "Hello World"
self.importantVarCapture = importantVar
let cell2 = tableView.dequeueReusableCell(withIdentifier: "Cell2") as? Cell2
cell2?.cell2Label.text = importantVar
return cell2!
}
}
}
以下是我的xib文件:
class Cell1: UITableViewCell {
@IBOutlet weak var cell1Label: UILabel!
}
class Cell2: UITableViewCell {
@IBOutlet weak var cell2Label: UILabel!
}
P.S - 我最近试图提出这个问题,并试图删除这个问题,但一直无法解决。我之前的问题没有代码,而且太乱了。我创建了这个新的XCode项目来复制我的问题。请接受我对复制品的道歉,我感谢您的帮助。