[英]Accessing outlets from function
我刚刚开始学习Swift。 我创建了一个管理REST API调用的类,该方法采用3个参数,即data,successCallback和failCallback。
很好,我得到了数据,我解析了JSON等。
我的问题是,在传递给API方法的successCallback内部,我无法做任何与IBOutlets相关的事情。 我尝试了self.textfield.text,textfield.text,没有任何效果。 没错,没事。
func naturalSearch(data : String, callback:(NSDictionary) -> (), fail :(String) -> ()) {
request(getLink("v2/natural"), data : data, callback : callback, fail : fail)
}
这是API方法。
service.naturalSearch(SearchTextfield.text, callback: processResponse, fail: responseFail)
这就是我所说的方法。 内部流程响应与网点工作无关的任何内容。 我有3个,2个文本字段和一个tableview。 我试图隐藏/更改标签/等,但没有任何效果。
谢谢Mihai
这是因为您正在使用回调函数,该函数在UI线程之外执行。 您应该使用dispatch_async
包装UI更改代码。
例如:
dispatch_async(dispatch_get_main_queue(), {
self.labelOutlet.text = "Text"
})
您只能在主线程中修改UI元素。 要访问它,请使用:
dispatch_async(dispatch_get_main_queue()) { /* your Code */ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.