Я пишу приложение, в котором отображается карта. Теперь я хочу дать пользователю возможность изменить MKMapType со стандартного на гибридный.
Для этого я создал переход к другому контроллеру представления, содержащему переключатель для установки типа карты. Переход модальный с использованием частичного завитка. Чтобы получить доступ к значению переключателя, я ввел BOOL, который называется fotoMode в AppDelegate. Если для этой переменной установлено значение YES (и если переключатель установлен в положение ON), я бы хотел перерисовать карту.
- (IBAction) FotoModusSwitchChanged:(UISwitch *)sender
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if(sender.isOn)
{
appDelegate.fotoMode=YES;
}
else
{
appDelegate.fotoMode=NO;
}
}
Я включил следующие строки кода в VieWillAppear, ViewDidAppear, ViewDidLoad, ViewWillLayoutSubviews контроллера представления для представления карты, но это не работает:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.fotoMode) {
[self.MapOutlet setMapType:MKMapTypeHybrid];
}
else
{
[self.MapOutlet setMapType:MKMapTypeStandard];
}
Любая идея, что я делаю неправильно? Спасибо.
PS: установка MKMapType вручную на Hybrid или Standard работает...
if (appDelegate.fotoMode)
и, когда отладчик остановится на этом, проверьте значениеappDelegate.fotoMode
. Также проверьте, является лиself.MapOutlet
nil
в этот момент. - person   schedule 05.10.2012