代码之家  ›  专栏  ›  技术社区  ›  Kavin Kumar Arumugam

仅当特定的viewcontroller在前台时,ios swift调用函数

  •  0
  • Kavin Kumar Arumugam  · 技术社区  · 7 年前

    在我的应用程序中,我有两个视图控制器 viewcontroller1 viewcontroller2 是的。在 view controller1 我有一个函数 UpdateView() 我需要为每个 60 seconds 我是用 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60) .我的问题是我只想在 视图控制器1 当用户移动到 视图控制器2 我不想再运行这个函数了。如何解决这个问题?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ravi    7 年前

    你可以用一个 Timer 是的。内部 viewWillAppear 方法启动计时器并在 viewWillDisappear 停止或暂停计时器。

    var myTimer:Timer!
    var myTimeInterval:TimeInterval = 60
    
    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            myTimer = Timer.init(fire: Date(), interval: myTimeInterval, repeats: true, block: { (aTimer) in
                //call the functio you want
                UpdateView()
            })
        }
    
        override func viewWillDisappear(_ animated: Bool) {
            super.viewWillDisappear(animated)
            myTimer.invalidate()
        }
    
        2
  •  1
  •   Y_Y    7 年前

    您应该停止viewDidImappease中的计时器,并启动viewDidImappear中的计时器逻辑viewController1。

    推荐文章