在使用展开segue时,如何将从被调用视图控制器获取的数据显示到调用视图控制器的动态tableviewcell中。

时间:2016-03-17 23:29:36

标签: swift

我有动态的桌面视图,其中一个单元格(持续时间)点击时打开另一个视图控制器,这是一个持续时间列表(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]

            }
        }
    }
}

1 个答案:

答案 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; 之前更新那个数组。