2016-05-20 1 views
0

Я делаю приложение и использую NSTimer, чтобы сделать таймер в моем приложении. Но мне нужно, чтобы NSTimer запускался при запуске сцены. У меня две сцены в моем приложении - рабочий стол, а приложение - Я вот мой код viewcontroller.swift (вторая сцена первая сцена в пустом) И кстати, это мой 3-х день, используя быстрый, и я в средней школе;).Swift Run NSTimer автоматически

import UIKit 
var Number = 2 
var Answer = Number * 2 
var score = 0 
var scorelabel = "Score: " 
var Timer = NSTimer() 
var Counter = 10 

class SecondViewController: UIViewController { 


@IBOutlet weak var RightAndWrongLabel: UILabel! 

@IBOutlet weak var TimerLabel: UILabel! 
@IBOutlet weak var RightAndWrong: UIImageView! 
@IBOutlet weak var ScoreIabel: UILabel! 
@IBOutlet weak var UserInputAnswer: UITextField! 
@IBOutlet weak var Question: UILabel! 
@IBOutlet weak var TimerOut: UIImageView! 

var seconds = 0 
var timeison = true 







@IBAction func ConfirmAnswer(sender: AnyObject) { 
    let UserAnswer = Int(UserInputAnswer.text!) 
    if UserAnswer == Answer { 
     print("Your right") 
     Number += 2 
     score += 1 
     ScoreIabel.text = "Score: \(score)" 
     Question.text = "\(Number) x 2" 
     UserInputAnswer.text = "" 
     Answer = Number * 2 
     RightAndWrong.image = UIImage(named: "Label") 
     RightAndWrongLabel.hidden = false 
     RightAndWrongLabel.text = "Right!" 
     RightAndWrongLabel.textColor = UIColor(red: 0, green: 225, blue: 0, alpha: 1) 

    } else { 
     UserInputAnswer.text = "" 
     RightAndWrong.image = UIImage(named: "Label") 
     RightAndWrongLabel.hidden = false 
     RightAndWrongLabel.text = "Wrong!" 
     RightAndWrongLabel.textColor = UIColor(red: 225, green: 0, blue: 0, alpha: 1) 



    } 



} 

func DisplayTimer() { 
    Timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("updateCounter"), userInfo: nil, repeats: true) 
} 


func updateTimer(){ 
    TimerLabel.text = String(Counter--) 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    UserInputAnswer.keyboardType = UIKeyboardType.NumberPad 
    RightAndWrongLabel.hidden = true 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    3 
    // Dispose of any resources that can be recreated. 
} 


/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

} 

ответ

0

Swift 2.x:

func DisplayTimer() { 
    Timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target:self, selector: #selector(updateTimer), userInfo: nil, repeats: true) 
} 

func updateTimer() { 
    if Counter != 0 { TimerLabel.text = "\(Counter -= 1)" 
    } else { 
     Timer.invalidate() 
     // call a game over method here... 
    } 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    ... 

    // start the timer when this controller shows up 
    DisplayTimer() 
    TimerLabel.text = "\(Counter)" 

    ... 
    } 
0

Если вы хотите начать свой таймер при загрузке сцены вызова DisplayTimer() под override func viewDidLoad() когда вид загружен

Кроме того, если вы хотите обновить свою метку каждый второй, селектор в вашем NSTimer звонит updateCounter не updateTimer

+0

Я исправил ошибку, используя timer.invalidate(), когда счетчик var == 0 –

+1

timer.invalidate удаляет таймер, если он уже существует. Я думал, что вы хотите запустить свой таймер, когда сцена загружается? – Mochi

+0

Хорошо, что я позволю пользователю сначала ответить на вопрос, затем начнется таймер. (Это приложение для 7-12-летних). Но это не имеет значения, потому что я 12 XD –