【问题标题】:Automatically Reload TableViewController On Rewind倒带时自动重新加载 TableViewController
【发布时间】:2015-08-07 04:57:26
【问题描述】:
我正在开发一个应用程序,它从 tableViewController 开始,它加载并显示存储在 Realm 数据库中的数据。我有它,所以我可以在我的领域数据库中在一个单独的场景中创建一个新条目,并且保存按钮展开会回到初始的 tableView。
我现在有它,所以 tableViewController 将在下拉时重新加载 tableView (something I Learned here, second answer down) 但如果 tableView 在展开时自动重新加载它自己会更好,显示我数据库中的所有数据,包括我的新条目.有人可以指导我看一个教程,教我如何做到这一点。
附加信息:我的应用嵌入在导航控制器中。保存按钮位于底部工具栏。
【问题讨论】:
标签:
swift
uitableview
ios8
realm
【解决方案1】:
您可以为此使用NSNotification。
首先在你的tableViewController 中添加这个到你的viewDidLoad 方法中:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refresh", object: nil)
}
这将从您的班级中调用一种方法:
func refreshTable(notification: NSNotification) {
println("Received Notification")
tableView.reloadData() //reload your tableview here
}
所以也添加这个方法。
现在在您的下一个视图控制器中,您将新数据添加到数据库中,并在您的 unWindSegue 函数中添加:
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil)
希望对你有帮助
【解决方案2】:
尝试在初始(tableview)控制器中重新加载viewWillAppear 中的表格数据。
override func viewWillAppear(animated: Bool) {
self.tableView.reloadData()
}
或者再次调用从 Realm 加载数据的函数,例如
override func viewWillAppear(animated: Bool) {
getMyData() //or whatever your function name is
}
【解决方案3】:
如果您正在使用情节提要展开转场,请尝试使用
func unwindSegue(segue:UIStoryboardSegue) {
if segue.identifier == "identifier" {
getData()
self.tableView.reloaddata()
}
}