Возможно, вы захотите прочитать, что означает слово IBAction;это просто причудливый термин для void, используемый в обоих случаях:
- (void)startUpdates;
и
- (IBAction)buttonClick:(id)sender;
, что означает «не возвращает значений или объектов».под «помещением в IBAction» вы подразумеваете, что кнопка пользовательского интерфейса или аналогичный элемент инициируют выборку местоположения и соответственно обновляют пользовательский интерфейс.Это невозможно напрямую, так как местоположение является асинхронным вызовом.Вы можете легко создать синхронную оболочку, которая будет блокировать все другие операции, пока не будут возвращены данные о местоположении, но это настоятельно не рекомендуется.Вместо этого при работе с местоположением, как правило, лучше спроектировать ваше приложение, чтобы предоставить пользователю индикатор того, что вычисления происходят (счетчик / индикатор выполнения), а затем обновлять пользовательский интерфейс, когда ваш обратный вызов местоположения возвращается.может выглядеть примерно так:
- (IBAction)locationButtonClick:(id)sender {
self.spinner.hidden = NO;
[self.spinner startAnimating];
self.myLocationManager.delegate = self;
[self.myLocationManager startUpdates];
}
- (void)newPhysicalLocation:(id)newLocation {
//TODO: Update UI
[self.spinner stopAnimating];
self.spinner.hidden = YES;
}