【发布时间】:2021-09-08 23:31:51
【问题描述】:
我想在插入数据后刷新我的表格视图。
所以我正在做的是单击一个按钮,这些按钮打开另一个视图控制器,我在其中插入数据,然后按一个按钮将该数据添加到数组(对象),然后返回到表视图控制器,在这里我想滑动刷新我的表格视图。
这是我的代码:
【问题讨论】:
标签: arrays swift uitableview tableview
我想在插入数据后刷新我的表格视图。
所以我正在做的是单击一个按钮,这些按钮打开另一个视图控制器,我在其中插入数据,然后按一个按钮将该数据添加到数组(对象),然后返回到表视图控制器,在这里我想滑动刷新我的表格视图。
这是我的代码:
【问题讨论】:
标签: arrays swift uitableview tableview
我不太确定通过滑动刷新表格视图是什么意思。 但我有两个想法可能对你有用。
如果您只有这两个视图控制器,并且您接受表视图也重新加载,例如,在启动时(第一次调用 viewDidLoad),这是可能的:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
tableView.reloadData()
}
如果你只想在保存条目后刷新表格视图,你也可以创建一个协议并使用它。
// Create the protocol
protocol ReloaderDelegate {
func reloadTableView()
}
// Set up a variable in your AddProcessador view controller
var delegate: ReloaderDelegate?
// Set the delegate to a value when you create the AddProcessador instance in the ViewController
controller = self
// Now you can call the function in your AddProcessador view controller
delegate?.reloadTableView()
作为一个完整的代码:
protocol ReloaderDelegate {
func reloadTableView()
}
class AddProcessador: UIViewController {
var delegate: ReloaderDelegate?
// Your IBOutlets
override func viewDidLoad() {
super.viewDidLoad()
// ...
}
@IBAction func addClick(_ sender: Any) {
// 1. Add your new processador
// 2. Reload your table view
delegate?.reloadTableView()
// 3. Go back
navigationController?.popViewController(animated: true)
}
}
class ViewController: UIViewController, ReloaderDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// ...
}
func reloadTableView() {
self.tableView.reloadData()
}
@IBAction func pushAddProcessador() {
let controller = AddProcessador()
controller.delegate = self
navigationController?.pushViewController(controller, animated: true)
}
}
如果我在某个地方犯了错误,请原谅。 我希望我能以某种方式帮助你。
【讨论】:
override func viewDidLoad() {
super.viewDidLoad()
refreshControl?.addAction(UIAction(handler: { _ in
DispatchQueue.main.async {
self.tableView.reloadData()
}
}), for: .primaryActionTriggered)
}
override func numberOfSections(in tableView: UITableView) -> Int {
refreshControl?.endRefreshing() //this can be moved to number of rows in section as well. We just need to tell the control we have data and to stop spinning.
return 1
}
【讨论】: