Ios 如果视图已显示,则使用新数据更新PickerView

Ios 如果视图已显示,则使用新数据更新PickerView,ios,objective-c,uipickerview,Ios,Objective C,Uipickerview,我正在从服务器获取数据以显示在选择器视图中。如果API没有返回,我将在选择器视图中显示加载… 以下是我的用例: 对服务器进行的API调用 用户单击按钮以显示选择器视图 将显示选择器视图并显示文本加载 API调用返回。我调用[self.self.seepoicickerview reloadAllComponents] 什么也没发生。基本上,由于选择器视图已经加载并显示在屏幕上,因此它不会更新其数据。如何更新已显示的选择器视图的数据?您需要 在.h文件中 @interface ViewContro

我正在从服务器获取数据以显示在选择器视图中。如果API没有返回,我将在选择器视图中显示加载…

以下是我的用例:

  • 对服务器进行的API调用
  • 用户单击按钮以显示选择器视图
  • 将显示选择器视图并显示文本加载
  • API调用返回。我调用
    [self.self.seepoicickerview reloadAllComponents]
  • 什么也没发生。基本上,由于选择器视图已经加载并显示在屏幕上,因此它不会更新其数据。如何更新已显示的选择器视图的数据?

    您需要

    在.h文件中

    @interface ViewController : UIViewController
    <UIPickerViewDataSource,UIPickerViewDelegate>
    

    希望这能帮助您解决问题:我的服务器响应不在主线程上。我设置了一个测试线程来延迟UI更新以进行测试。我从主线程中删除了测试代码并执行了updateUI行,所有操作都与上述代码相同。

    在重新加载所有组件之前,您需要更新数据源。
    解决了这个问题:我的服务器响应不在主线程上。我设置了一个测试线程来延迟UI更新以进行测试。我删除了测试代码,并从主线程执行了updateUI行,所有操作都与上述代码相同。很好。你应该把它贴出来作为答案,可能会帮助其他有同样问题的人。。
    yourpicker.delegate = self;
    yourpicker.datasource = self;