为什么我的变量在 printLn 中发生变化,但在表格视图 Swift 中没有变化



我花了很长时间试图解决这个问题,但没有决心。

我终于到了这样一个地步:当我展开 segue 时,我从一个控制器中提取数据并将其移动到目标控制器,但是,当变量仅在println中重新加载而不在表视图中时。

我会尝试用我的代码更好地解释这一点,因为它听起来很复杂。

我在一个控制器上有一个标签,按下时,它会以模式显示UISearchController。 选择单元格时,它会关闭带有展开序列的视图,并将数据从单元格传递回上一个控制器以更改按钮的标签。

我在初始控制器顶部的变量中设置 label.text,如下所示var selectedStation = "Search Stations"

这是我的劣质命名函数,用于println变量以查看它是否有效:

func updateStuff() {
println("you selected (selectedStation)")
tableView.reloadData()
}

我在cellForRowAtIndexPath中声明标签文本,如下所示:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("searchFieldCell", forIndexPath: indexPath) as! searchFieldTableViewCell
cell.backgroundView = UIImageView(image: UIImage(named: "red-full"))
cell.destinationLabel.text = selectedStation
}

然后在我UISearchController我有以下内容来传递该变量

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
println(stationArray[indexPath.row])
selectedStation = stationArray[indexPath.row]
self.performSegueWithIdentifier("unwindToSet", sender: self)
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.destinationViewController .isKindOfClass(SetAlertController) {
var VC = segue.destinationViewController as! SetAlertController
VC.selectedStation = self.selectedStation
VC.updateStuff()
}
}

本质上,我的控制器检索更新的变量,但不在表视图中更新它,它只在 println 中更新它。

我使用以下视图控制器设置了一个快速演示项目:

class MainViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBAction func unwind(segue: UIStoryboardSegue) {
println("unwinding")
if let sourceViewController = segue.sourceViewController as? ModalViewController {
label.text = sourceViewController.selectedText
}
}
}

点击标签会导致模态视图控制器显示。 我在故事板中设置了这个。

class ModalViewController: UITableViewController {
var selectedText: String?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)!
selectedText = cell.textLabel?.text
performSegueWithIdentifier("unwindToSet", sender: self)
}
}

一切都按预期工作! 如果有什么不清楚的地方,请随时询问... 您可以在此处找到演示项目:https://www.dropbox.com/sh/u2blzmo3ztaaini/AADq8hOMMS71wvBH1eH4Bz_4a?dl=0

最新更新