gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:08:53 25 4
gpt4 key购买 nike

我想在 ViewDidAppear 上重新加载我的 UITableView 中的数据,并使用来自 NSUserDefaults 的新数据填充表格。我知道一切都适用于填充表格的新信息,因为当我关闭并再次打开模拟器时,新数据就在那里。但我希望它在每次显示 View 时都用新数据刷新。这是一个提醒应用程序。

这是我的 View Controller :

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 上尝试过其他解决方案,但不幸的是,这些解决方案都不适合我。

编辑

这是更新 remindersArray 的第二个 View Controller :

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 重新检索数据。

关于ios - 如何在 ViewDidAppear 上使用 reloadData() 刷新 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com