Я не могу изменить содержимое UILabel внутри крышки. Я googled, но решение нигде не найдено.Как изменить содержимое UILabel внутри затвора
Вот родственная часть моего кода:
class ViewController: UIViewController {
@IBOutlet var city: UITextField!
@IBOutlet var message: UILabel!
@IBAction func buttonPressed(sender: AnyObject) {
var urlString = "http://google.com"
var url = NSURL(string: urlString)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!) {(data, response, error) in
self.message.text = "try"
println("done")
}
task.resume()
}
... //rest of the code
Это должно изменить содержание UILabel сообщения с «попробовать», когда я нажимаю на кнопку. Он выводит «done» в консоли, но не изменяет содержимое UILabel.
Я изменил его так, как вы предлагали, он работал. После этого я добавил self.message.text = "try" после метода dispatch_async, теперь он тоже работает. Когда я удаляю метод dispatch_async, он не работает. –
Является ли это законным способом решения этой проблемы или это просто обходной путь? В чем основная причина моей проблемы? –
Это способ решить проблему. Это не обходной путь. Вы должны выполнить обновления пользовательского интерфейса в основном потоке. – rakeshbs