如何在 alertController 之后更新 tableView?
Posted
技术标签:
【中文标题】如何在 alertController 之后更新 tableView?【英文标题】:How to update tableView after alertController? 【发布时间】:2021-12-10 17:54:38 【问题描述】:我有一个 tableView,我在 viewDidLoad()
中填充了 Realm。
var data = RealmModel.shared.getSections()
RealmModel.shared.fillTableview(company: "Airbus", plane: "A350", status: false)
RealmModel.shared.fillTableview(company: "Airbus", plane: "A380", status: false)
RealmModel.shared.fillTableview(company: "Boeing", plane: "Boeing 737", status: false)
data = RealmModel.shared.getSections()
statisticsTableView.reloadData()
我想用alertController
向tableView
添加元素。
@IBAction func addPlane(_ sender: Any)
let alertController = UIAlertController(title: "На каком самолёте вы летали?", message: nil, preferredStyle: .alert)
alertController.addTextField (textfield) in
let alertCancel = UIAlertAction(title: "Отменить", style: .destructive) (alert) in
let alertAction = UIAlertAction(title: "Добавить", style: .cancel) (alert) in
let newItem = alertController.textFields?.first?.text
RealmModel.shared.fillTableview(company: "Другие", plane: newItem ?? "", status: true)
alertController.addAction(alertAction)
alertController.addAction(alertCancel)
present(alertController, animated: true, completion: nil)
statisticsTableView.reloadData()
alertController
关闭后我应该如何处理 tableView 更新,因为现在它只在我关闭应用程序然后重新打开它后更新。
【问题讨论】:
添加data = RealmModel.shared.getSections()
和 statisticsTableView.reloadData()
作为 alertAction
let alertAction = UIAlertAction(title: "Добавить", style: .cancel) (alert) in let newItem = alertController.textFields?.first?.text RealmModel.shared.fillTableview(company: "Другие", plane: newItem ?? "", status: true) data = RealmModel.shared.getSections() statisticsTableView.reloadData()
中应该完成这项工作的最后一条语句
欢迎来到 SO。这个问题很模糊,有很多事情可能会导致这个问题。比如我们不知道tableView的dataSource是什么。数组?它是如何填充的?代码中没有向该数据源添加任何内容,因此 tableView 不会有任何新数据。您能否通过添加更多相关代码来澄清问题?
【参考方案1】:
发现问题,我不得不在 AlertAction 中重新加载 tableView,而不是之后
@IBAction func addPlane(_ sender: Any)
let alertController = UIAlertController(title: "На каком самолёте вы летали?", message: nil, preferredStyle: .alert)
alertController.addTextField (textfield) in
let alertCancel = UIAlertAction(title: "Отменить", style: .destructive) (alert) in
let alertAction = UIAlertAction(title: "Добавить", style: .cancel) (alert) in
let newItem = alertController.textFields?.first?.text
RealmModel.shared.fillTableview(company: "Другие", plane: newItem ?? "", status: true)
self.data = RealmModel.shared.getSections()
self.statisticsTableView.reloadData()
alertController.addAction(alertAction)
alertController.addAction(alertCancel)
present(alertController, animated: true, completion: nil)
【讨论】:
以上是关于如何在 alertController 之后更新 tableView?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何在自定义 AlertController 中点击按钮时呈现 ViewController
Swift 2 - 当 AlertController 出现时如何切换到另一个 ViewController?
在非ViewController中显示AlertController的方法