Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Быстрое кодирование NSTimer

Автор вопроса: CateОтветов: 2

Использование Swift 2.0 и попытка реализовать Swift NSTimer в пользовательской клавиатуре. Button2 отлично отображается при нажатии Button1, пока не сработает NSTimer и не сломает клавиатуру.

Я пытаюсь скрыть Button2 через несколько секунд.

@IBAction func Button1(sender: UIButton) {
    Button2.setTitle("Text", forState: UIControlState.Normal)

    NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("Hide:"), userInfo: nil, repeats: false)
    Button2.hidden = false
}
  • Можем ли мы также увидеть, как выглядит Hide()? Может там что-то идет не так. Cole 29.07.2015
  • Покажите свое определение функции Hide:. zrzka 29.07.2015
  • @Cole func Hide () {Button2.hidden = true } Cate 29.07.2015
  • добавьте @objc перед func Hide().... + ваша функция должна принимать один указанный вами аргумент Andrew Luca 29.07.2015
  • Это дает мне сообщение об ошибке "Только классы, протоколы, методы, инициализаторы, свойства и объявления индексов могут быть объявлены @objc. Cate 29.07.2015
  • Проверьте еще раз, func - это метод внутри класса. Это должно сработать, у меня перед глазами такая декларация, которая работает. Andrew Luca 29.07.2015

xcodeswiftnstimerswift2

Ответы

Ответ 1 · рейтинг 2 · Eric

Это должно работать (обратите внимание, что я изменил имена некоторых функций, чтобы они более точно соответствовали соглашениям):

@IBAction func button1Tapped() {
    button2.setTitle("Text", forState: .Normal)
    button2.hidden = false
    NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "hideButton2", userInfo: nil, repeats: false)
}

@objc func hideButton2() {
    button2.hidden = true
}

Ответ 2 · рейтинг -2 · Andrew Luca

Замените Selector("Hide:") на "Hide:" и добавьте @objc перед вашей функцией.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы