首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift Language for IOS中同步不同操作

如何在Swift Language for IOS中同步不同操作
EN

Stack Overflow用户
提问于 2014-07-05 00:05:49
回答 1查看 382关注 0票数 0

我在一个类中创建了一个计时器,并尝试在计时器工作时在另一个类中做其他事情,并在计时器停止时做其他事情。例如,当计时器工作时显示每一秒。我将代码简化如下。如何实现这一点?

代码语言:javascript
复制
import Foundation
import UIView

class TimerCount {
var timer: NSTimer!
var time: Int!
init(){
    time = 5
    timer = NSTimer.scheduledTimerWithTimeInterval( 1.0 , target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update(){
    if(time > 0) {
       time = time - 1
        // do something while timer works
    }
    else{
        timer.invalidate()
        timer = nil
        time = 5
    }
}
}


class Main: UIView {
var Clock: TimerCount!
override func viewDidLoad() {
    Clock = TimerCount()
    //? do something else while clock works
    // ? do other things while clock stops
    // FOR EXAMPLE: show every second when timer works
    if(Clock.time > 0){
        println(Clock.time)
    }else{
        println("clocker stops")
    }

}        
}
EN

回答 1

Stack Overflow用户

发布于 2014-07-05 04:06:23

viewDidLoad很可能只会被调用一次。您可以简单地将更新方法放在Main对象中,然后将main的实例和更新方法传递给scheduledTimerWithTimerInterval调用。否则,您需要在主类中使用一个新方法来从timerCount类调用,并传入当前时间的int。

这是在你的主类中:

代码语言:javascript
复制
func updateMethodInMain(timeAsInt: Int){
//do stuff in Main instance based on timeAsInt
}

以下是您在timer类中拥有的内容:

代码语言:javascript
复制
func update(){
    if(time > 0) {
       time = time - 1
        instanceNameForMain.updateMethodInMain(time)
    }
    else{
        timer.invalidate()
        timer = nil
        time = 5
    }
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24577956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档