2014-11-09 2 views
0

У меня есть таймер, который вызывает селектор. Непосредственно из этой функции я хочу изменить текст метки.Изменить label.text из функции Xcode/Swift

@IBOutlet weak var myLabel: UILabel! 

override func viewDidLoad() { 
var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("update"), userInfo: nil, repeats: true) 
} 

func update() { 
self.myLabel.text = "MyNewText" 
} 

Xcode сообщает, что я использую «self», но ярлык по-прежнему не обновляется! Спасибо за помощь!

ответ

5

обновления пользовательского интерфейса всегда должно быть сделано в основном потоке, поэтому попробуйте следующее:

func update() { 
    DispatchQueue.main.async { 
     self.myLabel.text = "MyNewText" 
    } 
} 
+0

Спасибо! Работал! – iOsNewbie

+2

Но если вы планируете таймер в главной очереди/потоке, тогда обратный вызов также будет вызываться в главной очереди/потоке. –

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