首页 > 解决方案 > 尝试使用警报完成刷新集合视图

问题描述

我有一个带有集合视图的屏幕和一个加号栏按钮项。当按下加号时,会弹出一个警告窗口,用户可以在其中将信息添加到列表中。点击确定后,我正在尝试刷新集合视图,但我做错了。

打印语句"passed guard"实现了,我可以得到他们输入的信息。只是不能在不离开和回来的情况下刷新视图以反映这一点。有什么指导吗?实际上我已经遇到过几次,所以我显然错过了一些东西。首先十分感谢。

    @objc func newButtonPressed() {
        let alert = UIAlertController(title: "Add", message: "", preferredStyle: .alert)

        alert.addTextField { (textField) in
            textField.placeholder = "Name"
        }

        alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
            var name = ""
            guard let textFields = alert.textFields else { return }
            guard let navController = self.parent as? UINavigationController else { return }
            guard let settingsVC = navController.topViewController as? SettingsVC else { return }

            print("passed guard") // success

            DispatchQueue.main.async {
                settingsVC.collectionView.reloadData()
                settingsVC.view.backgroundColor = .red

                // For testing purposes, explicitly using main thread and setting to red
            }
        }))
        alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
        present(alert, animated: true, completion: nil)
    }

标签: iosswiftuicollectionviewuialertcontroller

解决方案


可能是您需要更改集合数据源

guard let textFields = alert.textFields else { return }

settingsVC.arr.append(textFields.first!.text!) // arr is collection dataSource
settingsVC.collectionView.reloadData()

推荐阅读