ios - 如何更改使用不同类的界面生成器设置的 UI 元素?

标签 ios objective-c xcode

我正在清理我的一些代码,我决定创建一个“后端”类来帮助解决这个问题。这个类所做的只是异步地从 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/

相关文章:

ios - 需要帮助了解如何对 iOS 应用程序进行版本控制

ios - 如何使用代码为 UIButton 创建自定义图像?

ios - 将“UIButton”状态更改为“Touch Up上选定的UIControlState”

iphone - 如何在基于 View 的应用程序中添加导航 Controller

ios - 有 2 个 textField.delagate = self 取消其中一个

ios - 无法加载静态库 bundle Storyboard(尚未加载) - iOS

ios - 苹果 watch : Check pair status?

objective-c - TableView 不显示来自 Parse.com 的数据

ios - 使用 ad hoc 生成的 native ipa 文件无法在 ios 13 真实设备上运行

iOS:多个查询导致应用程序崩溃