我有一个包含细胞数据的tableview。单击单元格时,它会将我带到另一个视图控制器,并在新的ViewController上的UIlabel中显示单元格标签。
但是,当我返回到tableview并选择其他单元格时,新视图控制器上的值不会立即更新。它显示最后一次单击的单元格,然后如果我返回并再次重复该过程,它将更新。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell
self.labeltosend = currentCell.textLabel!.text!
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == PostSegueIdentifier {
if let destination = segue.destinationViewController as? NewViewController {
destination.newlabel = labeltosend
}
}
}
我应该以某种方式重新加载数据吗?
@IBOutlet weak var dispLabel: UILabel!
var newlabel = String()
override func viewWillAppear(animated: Bool) {
dispLabel.text = newlabel
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
答案 0 :(得分:2)
prepareForSegue(_:sender)
,则不会调用{p> segue
。尝试从视图控制器绘制segue以查看控制器。并使用performSegueWithIdentifier("MySegueIdentifier" sender:self)
中的tableView(_:didSelectRowAtIndexPath:indexPath)
执行手动分段。有关详细信息,请查看此answer。
答案 1 :(得分:1)
认为prepareForSegue有时会在didSelectRowAtIndexPath之前被调用,您可以将该代码移动到prepareForSegue。当你设置一个segue,因为你在prepareForSegue中有发送者是行点击的indexPath,正好让你可以做这些事情。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == PostSegueIdentifier {
if let destination = segue.destinationViewController as? NewViewController {
let indexPath = sender as NSIndexPath
let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell
self.labeltosend = currentCell.textLabel!.text!
destination.newlabel = labeltosend
}
}
}
你应该阅读Duncan的评论。
答案 2 :(得分:1)
首先:如果您从UITableViewCell连接了segue,请不要。删除它并从视图控制器本身连接segue。
第二:在didSelectRowAtIndexPath
方法上,调用prepareForSegue
方法。
最后在目标控制器上:
@IBOutlet weak var dispLabel: UILabel!
var newlabel = String()
override func viewWillAppear(animated: Bool) {
//dispLabel.text = newlabel
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
dispLabel.text = newlabel
}
此外,您需要改进命名约定。真是令人困惑
希望这有帮助!