我在视图控制器内部有一个表格视图作为下拉菜单。表格视图只是实际视图中的另一个视图,单击后即可更改不透明度。
用户可以使用下拉菜单选择要显示的不同项目。现在,如果用户选择一个项目,如何更新视图?因为显然我想立即向用户显示新项目的数据。
我应该选择另一种方法吗?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = carsArray[indexPath.row]
currentCar = item.name
buttonDropdown(self)
defaults.set(currentCar, forKey: "currentCar")
tableView.deselectRow(at: indexPath, animated: true)
}
答案 0 :(得分:0)
如果与tableview相关的实现在同一视图控制器中,则在选择任何项时,将调用didSelectIndexPath委托方法。调用此方法后,您可以在视图控制器的主视图中更改视图或详细信息。
如果与tableview相关的实现位于另一个视图控制器中,则可以使用自定义协议将选定项的数据从具有tableview相关实现的控制器传递到主视图控制器。
希望这会有所帮助。
答案 1 :(得分:0)
创建一种方法来更新UI组件数据,并在didSelectItem
函数中更改数据时调用该方法。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = carsArray[indexPath.row]
currentCar = item.name
buttonDropdown(self)
defaults.set(currentCar, forKey: "currentCar")
// update your UI
updateUIComponents(currentCar: currentCar)
tableView.deselectRow(at: indexPath, animated: true)
}
private func updateUIComponents(currentCar: Car) {
confirmButton.setTitle(currentCar.name, for: .normal)
headerLabel.text = currentCar.detail
// etc...
}