【问题标题】:iOS Swift Call Function Only When Particular ViewController Is In Foreground仅当特定 ViewController 在前台时 iOS Swift 调用函数
【发布时间】:2018-07-05 06:04:57
【问题描述】:

在我的应用程序中,我有两个视图控制器 viewcontroller1viewcontroller2。在view controller1 中,我有一个名为UpdateView() 的函数,我需要为每个60 seconds 调用此函数,并且我使用DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60) 完成了它。我的问题是我只想在viewcontroller1 处于前台时运行这个函数,当用户移动到viewcontroller2 时我不想再运行这个函数了。如何解决?

【问题讨论】:

    标签: ios swift uiviewcontroller dispatch-queue


    【解决方案1】:

    您可以使用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】:

      您应该在 viewDidDisappear 中停止计时器并在 ViewController1 中的 viewDidAppear 中启动计时器逻辑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-12
        • 2019-11-15
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多