2015-12-12 3 views

ответ

7

Я создал простой проект с scrollView и меткой, обновленной с помощью NSTimer. При создании таймера с scheduledTimerWithInterval таймер не запускается при прокрутке.

Решение создать таймер с NSTimer:timeInterval:target:selector:userInfo:repeats, а затем вызвать addTimer на NSRunLoop.mainRunLoop() с modeNSRunLoopCommonModes. Это позволяет таймеру обновляться во время прокрутки.

Здесь работает:

Demo .gif

Вот мой демо-код:

class ViewController: UIViewController { 

    @IBOutlet weak var timerLabel: UILabel! 
    var count = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     timerLabel.text = "0" 

     // This doesn't work when scrolling 
     // let timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true) 

     // Do these two lines instead: 
     let timer = NSTimer(timeInterval: 1, target: self, selector: "update", userInfo: nil, repeats: true) 

     NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) 
    } 

    func update() { 
     count += 1 
     timerLabel.text = "\(count)" 
    } 
} 

Swift 3:

let timer = Timer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true) 
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes) 
+0

я использовал этот код-> // pushButtonCountTimer = NSTimer.scheduledTimerWithTimeInterval (1, target: self, selector: ("push ButtonThreeMinuete "), userInfo: nil, repeat: true) pushButtonCountRunning = true // Я изменяю этот код, как ваш код, как это -> pushButtonCountTimer = NSTimer (timeInterval: 1, target: self, selector:" pushButtonThreeMinuete ", userInfo: nil , повторяет: true) // но не работает таймер. Я начинаю программировать ... это очень сложно .. (в любом случае очень спасибо mr.Vacawama – Kyu

+0

Вам также нужно сделать следующее: 'if let timer = pushButtonCountTimer {NSRunLoop.mainRunLoop(). addTimer (timer, forMode: NSRunLoopCommonModes)} ', чтобы таймер работал. – vacawama

+0

Я ввел этот код, но .. я вижу красное сообщение об ошибке-> инициализатор для условной привязки должен иметь необязательный тип, а не «NSTimer» .. что это сообщение ..; -> – Kyu

Смежные вопросы