Swift: 使用委托机制更新 table 数据
Swift: updating table data using delegation mechanism
我仍在努力使用委托方法更新从外部 class 触发的 UITableView 元素中的数据。我已经可以在包含 table 本身的 class 中更新 table 数据(例如 viewDidLoad())。但是我希望这个 table 在另一个视图控制器 class 中的按钮被选中时被更新。是的,我是菜鸟:(
这是我的第一个 class,其中包含要更新的 table 和更新方法:
class OrderHistoryController: UIViewController, UITableViewDataSource, UITableViewDelegate, reloadTableDataDelegate {
//update table data
func reloadTableData() {
self.orderTable.delegate = self
self.orderTable.dataSource = self
self.orderTable.reloadData()
print("update successful")
}
@IBOutlet var orderTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
reloadTableData()
}
}
这是授权协议:
protocol reloadTableDataDelegate: class {
func reloadTableData()
}
这是必须触发 table 数据更新的 class:
class OrderDocumentationController: UIViewController {
weak var delegate: reloadTableDataDelegate?
//delegate function to update table in order history
func updateTableInOrderHistory() {
delegate?.reloadTableData()
}
@IBAction func save(_ sender: UIButton) {
updateTableInOrderHistory()
}
}
代码不会导致错误,但委托根本不起作用。它似乎没有被调用,我的 table 没有得到更新......你能帮帮我吗?提前致谢!!!
这里似乎没有代表
delegate?.reloadTableData()
需要在prepareForSegue里面设置
我仍在努力使用委托方法更新从外部 class 触发的 UITableView 元素中的数据。我已经可以在包含 table 本身的 class 中更新 table 数据(例如 viewDidLoad())。但是我希望这个 table 在另一个视图控制器 class 中的按钮被选中时被更新。是的,我是菜鸟:(
这是我的第一个 class,其中包含要更新的 table 和更新方法:
class OrderHistoryController: UIViewController, UITableViewDataSource, UITableViewDelegate, reloadTableDataDelegate {
//update table data
func reloadTableData() {
self.orderTable.delegate = self
self.orderTable.dataSource = self
self.orderTable.reloadData()
print("update successful")
}
@IBOutlet var orderTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
reloadTableData()
}
}
这是授权协议:
protocol reloadTableDataDelegate: class {
func reloadTableData()
}
这是必须触发 table 数据更新的 class:
class OrderDocumentationController: UIViewController {
weak var delegate: reloadTableDataDelegate?
//delegate function to update table in order history
func updateTableInOrderHistory() {
delegate?.reloadTableData()
}
@IBAction func save(_ sender: UIButton) {
updateTableInOrderHistory()
}
}
代码不会导致错误,但委托根本不起作用。它似乎没有被调用,我的 table 没有得到更新......你能帮帮我吗?提前致谢!!!
这里似乎没有代表
delegate?.reloadTableData()
需要在prepareForSegue里面设置