use*_*374 13 uiviewcontroller reloaddata ios swift
在ViewController中,我试图在另一个ViewController中的TableView中重新加载数据,如下所示:
(self.presentedViewController as! tableViewController).table.reloadData()
Run Code Online (Sandbox Code Playgroud)
其中tableViewController是TableView控件中的类(我知道它不是上层驼峰的情况),而table是TableView.好吧,这样做会产生"致命的错误:在解开一个Optional值时意外地发现nil",我想这是有道理的,因为"presentViewController"还没有被加载.我也试过这个:
(self.navigationController!.viewControllers[self.navigationController!.viewControllers.count - 2] as! tableViewController).table.reloadData()
Run Code Online (Sandbox Code Playgroud)
产生了相同的结果(我确保tableViewController在navigationController堆栈的当前ViewController下).我对我应该做什么感到困惑...我觉得在不同的视图控制器中引用属性应该更容易.我可能有点模糊; 如果我,请告诉我你需要知道什么!
Leo*_*bus 41
Xcode 9•Swift 4
创建通知名称:
extension Notification.Name {
static let reload = Notification.Name("reload")
}
Run Code Online (Sandbox Code Playgroud)
您可以发布通知
NotificationCenter.default.post(name: .reload, object: nil)
Run Code Online (Sandbox Code Playgroud)
并在要重新加载数据的视图控制器上添加一个观察者:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(reloadTableData), name: .reload, object: nil)
}
@objc func reloadTableData(_ notification: Notification) {
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |