另一个ViewController中有一个按钮,如果我按下它,我应该看到按下按钮的时间。
按钮有效,但点击刷新按钮后表格不会刷新,将刷新放在ViewDidAppear功能上也不行。
我需要退出应用程序,将其从多任务处理中关闭并再次打开,然后按下按钮显示的时间。如何使刷新按钮工作?
(两个视图控制器都在同一个故事板中,第二个扩展第一个)
First View Controller:
class Tracking: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var activity: UITableView!
var activities = [String]()
var userData = false
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return activities.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = activities[indexPath.row]
return(cell)
}
@IBAction func Reload(_ sender: AnyObject) {
activity.reloadData()
}
.
.
.
}
第二个视图控制器:
class Activity: Tracking {
.
.
.
@IBAction func playButton(_ sender: AnyObject) {
isPlayed += 1
userData = true
UserDefaults.standard.set(userData, forKey: "userData")
let playElm = playStr + " בשעה: " + getTime()
activities.append(playElm)
UserDefaults.standard.set(activities, forKey: "activities")
}
.
.
.
}
答案 0 :(得分:0)
您需要从用户默认值中获取活动数组中的新日期,之后您可以重新加载数据
Delegate
答案 1 :(得分:0)
当您致电activity.reloadData()
时,您告诉表格视图仅根据您使用该行定义的activities
属性的内容来更新其行及其显示内容:
var activities = [String]()
当您从一个全新的开始加载应用程序时,activities
字符串数组尚未填充任何内容。我看到你将数据保存到UserDefaults,但我没有看到你从哪里读到它。
将下一个代码放入viewDidLoad()
。 viewDidAppear()
不是您想要用于此目的的。
activities = UserDefaults.standard.get(forKey: "activities")
activity.reloadData()
答案 2 :(得分:0)
我设法在没有刷新按钮的情况下自动运行。当我将它放在viewDidAppear中时,Svetoslav Bramchev编写的代码可以正常工作。谢谢你的帮助!
override func viewDidLoad() {
super.viewDidLoad()
userData = UserDefaults.standard.bool(forKey: "userData")
if(userData == true){
activities = UserDefaults.standard.object(forKey: "activities") as! [String]
} else {
activities.append("no data")
UserDefaults.standard.set(activities, forKey: "activities")
if(activities[0] == "no data"){
activities.remove(at: 0)
UserDefaults.standard.set(activities, forKey: "activities")
}
}
}
override func viewDidAppear(_ animated: Bool) {
activities = UserDefaults.standard.object(forKey: "activities") as! [String]
activity.reloadData()
}