[英]How to refresh UITableView with reloadData() on ViewDidAppear?
我想在ViewDidAppear上的UITableView中重新加載數據,並使用NSUserDefaults中的新數據填充表。 我知道一切都可以用填充表的新信息來完成,因為當我關閉仿真器后再打開時,新數據就在那里了。 但是我希望每次顯示視圖時都用新數據刷新。 這是一個提醒應用程序。
這是我的視圖控制器:
class FirstViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var reminderTableView: UITableView!
var remindersArray = NSUserDefaults.standardUserDefaults().objectForKey("remindersArray")! as AnyObject as [String]
let textCellIdentifier = "reminderText"
override func viewDidLoad() {
super.viewDidLoad()
reminderTableView.delegate = self
reminderTableView.dataSource = self
}
override func viewDidAppear(animated: Bool) {
dispatch_async(dispatch_get_main_queue()) {
self.reminderTableView.reloadData()
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return remindersArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as UITableViewCell
let row = indexPath.row
cell.textLabel?.text = remindersArray[row]
return cell
}
}
我不知道為什么viewWillAppear中的函數沒有重新加載表中的數據。 任何幫助將非常感激。 我已經嘗試過其他關於stackoverflow的解決方案,但是不幸的是,這些解決方案都不對我有用。
編輯
這是第二個更新controllers的視圖控制器:
import UIKit
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var reminderText: UITextField!
@IBAction func addReminder(sender: AnyObject) {
let newReminderText = reminderText.text
var nsRemindersArray = NSUserDefaults.standardUserDefaults().objectForKey("remindersArray")! as NSArray
var remindersArray = nsRemindersArray as AnyObject as [String]
remindersArray.append(newReminderText)
NSUserDefaults.standardUserDefaults().setObject(remindersArray, forKey: "remindersArray")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.reminderText.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
重新裝入表,但你不重新填充remindersArray
。 記住在調用reloadData
之前要從NSUserDefaults
重新獲取數據。
只需添加一個計時器,即可每.4秒重復執行“更新”代碼塊...
Override func viewDidLoad() {
super.viewDidLoad
self.starttimer()
}
func starttimer(){
var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
// update your data
self.tableview.reloadData()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.