Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当特定ViewController位于前台时,iOS Swift调用功能_Ios_Swift_Uiviewcontroller_Dispatch Queue - Fatal编程技术网

仅当特定ViewController位于前台时,iOS Swift调用功能

仅当特定ViewController位于前台时,iOS Swift调用功能,ios,swift,uiviewcontroller,dispatch-queue,Ios,Swift,Uiviewcontroller,Dispatch Queue,在我的应用程序中,我有两个视图控制器viewcontroller1和viewcontroller2。在view controller1中,我有一个名为UpdateView()的函数,我需要每隔60秒调用这个函数,我使用DispatchQueue.main.asyncAfter(截止日期:DispatchTime.now()+60)。我的问题是,我只想在viewcontroller1位于前台时运行此函数,当用户移动到viewcontroller2时,我不想再运行此函数。如何解决此问题?您应该停止V

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

您应该停止ViewDidEnglish中的计时器并启动ViewDidEnglish中的计时器逻辑出现在ViewController1中。

您应该停止ViewDidEnglish中的计时器并启动ViewDidEnglish中的计时器逻辑出现在ViewController1中。

您可以使用
计时器轻松做到这一点。在
视图内部将出现
方法启动计时器,在
视图内部将消失
停止或暂停计时器

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()
    }

使用
计时器
可以轻松完成此操作。在
视图内部将出现
方法启动计时器,在
视图内部将消失
停止或暂停计时器

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()
    }