我想创建一个标签来跟踪视图控制器被访问过的次数

时间:2017-03-31 09:22:19

标签: ios swift segue

我有一个执行segue的表格视图单元格。现在我的问题是:

我想要一个标签来计算访问/查看特定视图控制器的次数。当我们单击一个表单元格执行segue到另一个视图控制器并且标签在另一个视图控制器增量时,我们可以做些什么: 访问过1次, 访问了2次, 访问了3次。

我没有实现这个基本的东西,我有类似

的东西
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let val2 = mySongsArray[indexPath.row] performSegue(withIdentifier: "JustinTableViewCell" , sender: val2) 
}

我正在使用Swift 3。

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出现时计数都会增加。

希望它有所帮助。干杯:]