2017-08-28 126 views
0

另一个ViewController中有一个按钮,如果按下它,我应该看到按下按钮时的时间。刚刚重新启动应用程序后,UITableView单元更新

该按钮可以工作,但在单击刷新按钮后表格不会刷新,将刷新放在ViewDidAppear函数上也不起作用。

我需要退出应用程序,关闭它从多任务并再次打开它,然后按下按钮的时间显示。我应该怎么做才能使刷新按钮有效?

(两个视图控制器以相同的故事板,第二个延伸第一个)

首先视图控制器:

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

“在另一个ViewController中有一个按钮”从您的代码中,按钮似乎位于Button的同一个ViewController上。你如何精确管理? – Larme

+0

@Larme我已经更新了这个问题。 – matanm

+0

@matanm如何从第一视图控制器中的'Userdefaults'获取活动? –

回答

0

需要从用户默认值中获取您在活动数组中的新日期,之后您可以重新加载数据

@IBAction func Reload(_ sender: AnyObject) { 
    self.activities = UserDefaults.standard.get(forKey: "activities") 
    activity.reloadData() 
} 
0

当你调用activity.reloadData(),你告诉表视图,以更新其行,他们显示仅基于你行定义的你activities属性的内容:

var activities = [String]() 

当你'重新从一个新的开始加载应用程序,activities字符串数组尚未填充任何东西。我看到你将数据保存到UserDefaults,但我没有看到你阅读它的任何地方。

将下一个代码放入您的viewDidLoad()viewDidAppear()不是你想用于这个目的。

activities = UserDefaults.standard.get(forKey: "activities") 
activity.reloadData() 
0

我设法得到这个automaticlly没有刷新按钮。当我把它放在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() 
} 
相关问题