我有一个执行segue的表格视图单元格。现在我的问题是:
我想要一个标签来计算访问/查看特定视图控制器的次数。当我们单击一个表单元格执行segue到另一个视图控制器并且标签在另一个视图控制器增量时,我们可以做些什么: 访问过1次, 访问了2次, 访问了3次。
我没有实现这个基本的东西,我有类似
的东西func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let val2 = mySongsArray[indexPath.row] performSegue(withIdentifier: "JustinTableViewCell" , sender: val2)
}
我正在使用Swift 3。
答案 0 :(得分:1)
使用UserDefault。 UserDefault有助于存储数据,直到应用程序未卸载。
将此代码写入需要计数的第二视图控制器中。
override func viewDidLoad() {
super.viewDidLoad()
let user: UserDefaults = UserDefaults.init()
var count: Int = user.integer(forKey: "COUNT")
count += 1
user.set(count, forKey: "COUNT")
user.synchronize()
let Countstr: String = String(count)
lblCount.text = Countstr
}
答案 1 :(得分:0)
在表格视图控制器中,您可以创建计数器变量或属性,以计算用户点击同一单元格的时间,如果我正确理解您要实现的目标。
请注意,我没有使用短语the same
视图控制器,因为让我们说,你单击单元格A然后去查看控制器A,然后你回到表格视图控制器,你点击单元格A再次,新的视图控制器不再是您刚访问过的视图控制器。旧的vc已经消失了。
因此,如果您真的想要计算用户访问该特定视图控制器的时间,请在该视图控制器的viewDidLoad
方法中放置一个计数器,并在viewDidAppear
如果您只想通过点击该特定单元格来计算用户输入的时间。在表视图控制器中计算它。更新didSelectRowAtIndexPath
部分
答案 2 :(得分:0)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
var visitCount = (UserDefaults.standard.value(forKey: "visitCount") as? Int) ?? 0
visitCount += 1
self.lblVisitedCount.text = "Page Visited \(visitCount) times"
UserDefaults.standard.set(visitCount, forKey: "visitCount")
}
每次访问/查看视图控制器时,这将更新计数和标签文本。如果将代码放在viewDidLoad中,则在从下一个viewController弹出后访问VC时,它不会更新计数。但是,如果你通过将它保持在viewWillAppear函数中的方式来实现它,那么每次VC出现时计数都会增加。
希望它有所帮助。干杯:]