我正在清理我的一些代码,我决定创建一个“后端”类来帮助解决这个问题。这个类所做的只是异步地从 URL 中获取一些数据,然后在完成时调用主线程上的 parse 方法。完成后,我只是将解析数据中的字符串写入 UILabel
我已经使用界面生成器放置了。当所有内容都包含在 ViewController.h/m 中时,此方法有效,但它杂乱无章。我已经获取了 View Controller 中包含的所有方法,并将它们重新创建为我的类的类方法,因此我所要做的就是调用 [Backend fetchData]
, ETC。
但是,我遇到了一个问题。我意识到我实际上并不知道如何更改 UILabel
的文本字段来自除 View Controller 类本身之外的任何地方。我试过通过 UILabel
到后端类,但我猜我这样做的方式不正确,因为它不起作用。我正在尝试做的事情是否可行/我该如何完成?
最佳答案
创建基于 block 的 API。
[Backend fetchDataWithCompletionHandler: ^ (NSString* result, NSError* error)
{
if(error)
{
NSLog(@"Got error: %@", error);
return;
}
self.label.text = result;
}];
这是非常通用的,您的 View Controller 仍然可以控制其属性。
确保线程正确性可以在后端(在主线程上调用完成处理程序)或 in block (检查是否主线程,如果不是则在主线程上执行)完成,但请记住确保它,所以你不要最终从后台线程更新 UI。
关于ios - 如何更改使用不同类的界面生成器设置的 UI 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750061/