【发布时间】:2016-02-16 02:06:10
【问题描述】:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "FilteringPageSelection", bundle: nil)
controller = storyboard.instantiateViewControllerWithIdentifier("FilteringPageSelectionController") as! FilteringPageSelectionTableViewController
controller.filteringType = filterTitle[indexPath.row];
controller.selectedValue = selectedValue;
controller.title = "Selection"
self.navigationController?.pushViewController(controller, animated: true)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
上面是我的代码,这是我的表格视图控制器代码,我打算通过单击它的单元格来推送到另一个视图控制器。在新控制器内部,我有多个值可供选择。然而,在我从新控制器中选择新值后,我回到原始表格视图场景并从新控制器中获取选定值并分配给变量 selectedValue。下面是我的 unwind segue 代码。
@IBAction func unwindToFilteringVC(segue:UIStoryboardSegue) {
selectedValue = controller.selectedValue
}
但是,当我再次单击单元格时,由于 tableview 覆盖功能仅在 tableview 加载时第一次初始化,所以当我更改 selectedValue 的值时,controller.selectedValue 仍然保持旧值并推送进入新的控制器。
如何更改 controller.selectedValue 的值?
【问题讨论】:
-
您能否在更高、更多的用户界面级别上解释一下您真正想要实现的目标是什么?
-
当您调用 unwind segue 时,您需要重新加载所有表视图控制器以更新行中的数据。
-
在你的 viewWillAppear 方法上放一个 tableview.reloadData()
-
我已经编辑了问题,如果有任何问题请问我
-
嗨 CCastro 我已经使用了覆盖 func viewWillAppear(animated: Bool) { super.viewWillAppear(animated); tableView.reloadData() } 不起作用