簡體   English   中英

如何在ViewDidAppear上使用reloadData()刷新UITableView?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM