下拉菜单更新视图

时间:2019-05-24 09:59:05

标签: ios swift

我在视图控制器内部有一个表格视图作为下拉菜单。表格视图只是实际视图中的另一个视图,单击后即可更改不透明度。

用户可以使用下拉菜单选择要显示的不同项目。现在,如果用户选择一个项目,如何更新视图?因为显然我想立即向用户显示新项目的数据。

我应该选择另一种方法吗?

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)
    }

2 个答案:

答案 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...
}