ios - 尝试使用警报完成刷新集合视图
问题描述
我有一个带有集合视图的屏幕和一个加号栏按钮项。当按下加号时,会弹出一个警告窗口,用户可以在其中将信息添加到列表中。点击确定后,我正在尝试刷新集合视图,但我做错了。
打印语句"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)
}
解决方案
可能是您需要更改集合数据源
guard let textFields = alert.textFields else { return }
settingsVC.arr.append(textFields.first!.text!) // arr is collection dataSource
settingsVC.collectionView.reloadData()
推荐阅读
- typescript - 如何在模块中使构造函数私有但仍允许外部构造
- vhdl - Xilinx ISE 14.5 不要求提供 .ucf 文件,并且可能不会读取它
- json - NestJS - 在请求正文中接受多种 MIME 类型
- excel - 清除特定选定列表视图行的内容?
- google-apps-script - 什么会导致 Google Apps 脚本挂在 GetSheetByName 上?
- tsql - TSQL - PIVOT 但连接字段
- kubernetes - Kubernetes 部署文件中的 SAML 配置
- c# - 条纹 webhook 签名不存在
- java - 将JSON键值映射到java中的类
- python - 轴 = 3 用于 numpy 中的 3D 数组?