2015-03-31 3 views
1

Я работаю на прилавке. Я хочу остановить его работу, когда прошло 60 секунд. Для этого я использую этот код:Swift - Использование IBOutlet & IBAction в func?

class FirstViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    //calling the wait function 
    self.callForWait()  
} 

func game(){   
    var score : Int = 0 

    @IBOutlet weak var afficheurScore: UILabel! 

    @IBAction func boutonPlus(sender: UIButton) { 

     score = score + 1 

     afficheurScore.text = "\(score)" 
    } 
} 

func callForWait(){ 
    //setting the delay time 60secs. 
    let delay = 60 * Double(NSEC_PER_SEC) 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
    dispatch_after(time, dispatch_get_main_queue()) { 
     //call the method which have the steps after delay. 
     self.stepsAfterDelay() 
    } 
} 

func stepsAfterDelay(){ 
    //your code after delay takes place here... 
} 

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

boutonPlus является кнопкой, при нажатии на, afficheurScore, простая этикетка сказать (номер + 1).

В моей функции игры, у меня был эта ошибка:

"только свойство экземпляра может быть объявлено IBOutlet/IBAction"

ответ

1

Переместить этот код из игры() функции

@IBOutlet weak var afficheurScore: UILabel! 

    @IBAction func boutonPlus(sender: UIButton) { 
     score = score + 1 
     afficheurScore.text = "\(score)" 

    } 

Итак, у вас есть это на уровне класса, теперь они определены внутриgame() функция

Полный код должен быть:

class FirstViewController: UIViewController { 

    var score : Int = 0 

    @IBOutlet weak var afficheurScore: UILabel! 

    @IBAction func boutonPlus(sender: UIButton) { 
     score = score + 1 
     afficheurScore.text = "\(score)" 
    } 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    //calling the wait function 
    self.callForWait() 
    } 

    func game(){ 
    } 

    func callForWait(){ 
    //setting the delay time 60secs. 
    let delay = 60 * Double(NSEC_PER_SEC) 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
    dispatch_after(time, dispatch_get_main_queue()) { 
     //call the method which have the steps after delay. 
     self.stepsAfterDelay() 
    } 
    } 


    func stepsAfterDelay(){ 
    //your code after delay takes place here... 
    } 

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

Спасибо вашего ответа, «только свойство экземпляра может быть объявлено IBOutlet/IBAction» является исчезнувшим, но у меня есть эта проблема: оценка объявляется в функции игре, IBAction не иметь доступ. –

+0

Какая проблема? Вы только указали проблему выхода/действия ... –

+0

Да, это правда, спасибо :). –

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