Кодирование iPhone: Как я могу установить переменную в ViewController от другого? - PullRequest
1 голос
/ 15 мая 2011

У меня есть приложение панели вкладок с MKMapView на виде одной вкладки (FirstView.xib & FirstViewController.h / .m) и обычное представление с метками на другой вкладке (SecondView.xib).

В моем FirstViewController запущен и обновляется активный CoreLocation.Мне нужны переменные CoreLocation в моем SecondView, а также.Он должен отображать скорость, высоту, широту / долготу на SecondView.xib.

Как мне подходить к этому?Должен ли я иметь ViewController для SecondView, а также?Может быть, с другим экземпляром CoreLocation?Или лучше обновить метки secondview из FirstViewController?(Я не знаю, как реализовать второй вариант - т.е. управлять двумя XIB с одного контроллера.)

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 мая 2011

все ваши контроллеры вида имеют доступ к вашему приложению, поэтому используйте его для хранения переменных и передачи их обратно для обновления меток и т. Д.на ваши строки, используя delegate.someString = blah blah;

0 голосов
/ 15 мая 2011

Вы должны попытаться поместить менеджер you CLLocation в свой контроллер представления вкладок. Затем, когда он обновляется, он просматривает вкладки, чтобы увидеть, отвечают ли они указанному вами методу обновления местоположения. Таким образом, он может обрабатывать 1, 2, ... n представлений, которые нуждаются в информации о местоположении.

В вашем контроллере представления вкладок:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

    for (UIViewController *thisTabView in tabBarController.viewControllers) {
        NSLog(@"thisTabView: %@", [thisTabView description]);
        if ([thisTabView respondsToSelector:@selector(locationManager:didUpdateToLocation:fromLocation:)]) {
            NSLog(@"thisTabView: calling locationManager:didUpdateToLocation:fromLocation:");
            [thisTabView locationManager:manager didUpdateToLocation:newLocation fromLocation:oldLocation];
        }
    }

}
...