我花了很长时间试图解决这个问题,但没有决心。
我终于到了这样一个地步:当我展开 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