我有动态的桌面视图,其中一个单元格(持续时间)点击时打开另一个视图控制器,这是一个持续时间列表(30分钟,1小时,2小时等等)。选择的其中一个持续时间应在第一个视图控制器中显示所选的持续时间。我能够使用展开segue将数据传递回第一个视图控制器,但无法显示传递的值。不知道丢失了什么。 我正在显示以下代码: 第一视图控制器(呼叫)
@IBAction func unwindWithSelectedDuration(segue:UIStoryboardSegue) {
var cell = tableView.dequeueReusableCellWithIdentifier("durationCell") as! durationTableViewCell
if let durationTableViewController = segue.sourceViewController as? DurationTableViewController,
selectedDuration = durationTableViewController.selectedDuration {
cell.meetingDurationCell.text = selectedDuration
duration = selectedDuration
}
第二视图控制器(已调用)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SaveSelectedDuration" {
if let cell = sender as? UITableViewCell {
let indexPath = tableView.indexPathForCell(cell)
if let index = indexPath?.row {
selectedDuration = durationList[index]
}
}
}
}
答案 0 :(得分:0)
tableView.dequeueReusableCellWithIdentifier
内调用 tableView:cellForRowAtIndexPath:
。在这种背景下没有用处。
最简单的解决方法是在存储选定的持续时间后重新加载表格:
@IBAction func unwindWithSelectedDuration(segue:UIStoryboardSegue) {
if let durationTableViewController = segue.sourceViewController as? DurationTableViewController {
selectedDuration = durationTableViewController.selectedDuration
tableView.reloadData()
}
}
请注意,这假设您整个表只需要一个selectedDuration
,而不是每行一个reloadData
。如果你每行需要一个,我假设你把它们存放在某个地方的数组中,所以应该在typedef struct {
//other stuff
logic valid;
} BFRAME_OUTPUT;
之前更新那个数组。