У меня есть контроллер основного вида с кнопкой, прикрепленной к IBAction под названием REFRESH()
.
В действии REFRESH()
я вызываю функцию в классе, которая выполняет асинхронный запрос XML от WebService и создает объект из этих данных.
На контроллере основного представления есть еще одна функция `` (void) RECEIVED_DATA (), которая принимает объект, созданный из XML, в моем файле класса. Эта функция вызывается из моего файла класса только после того, как данные были получены обратно с сервера. В этот момент я хочу установить текст на метке в моем главном контроллере вида. К сожалению, я не могу. Я МОГУ изменить текст label.text в функции REFRESH()
, прикрепленной к нажатию кнопки, но НЕ МОГУ изменить его в функции void, которая вызывается при возврате данных из файла класса.
Вот две функции:
-(void)refresh
{
funcs *fn = [[funcs alloc]init]; //this is my class file which handles http request and response
[fn GetData];
}
-(void)received_Data:(DataObject *)x
{
myLabel.text = [x displayData]; //myLabel is a UILabel on my MainViewController and the displayData function returns an NSString. It won't even let me use myLabel.text = @"test"; Nothing happens.
}
Стоит ли искать способ связать функцию RECEIVED_DATA(
) с функцией viewDidLoad()
?
ОБНОВЛЕНИЕ -
Другой пользователь указал, что, поскольку данные извлекаются отдельным потоком, они не могут влиять на любой пользовательский интерфейс, поскольку пользовательский интерфейс работает в основном потоке. Я опубликую отдельный вопрос, чтобы узнать, есть ли у кого-нибудь подход к этой проблеме.