Хорошо, так что это на самом деле решено - но я не понимаю, почему то, что я сделал, сработало.
Моя проблема заключалась в том, что отправка уведомления один раз приводила к тому, что одно событие вызывалось несколько раз.Я получил несколько нежелательных просмотров в стеке.в скорлупе ореха:
пользователь нажимает кнопку на панели инструментов, от делегата отправляется уведомление
mapItem = [[UIBarButtonItem alloc] initWithImage:mapImage style: UIBarButtonItemStylePlain target:self action:@selector(mapButtonPressed:)];
-(void)mapButtonPressed:(id)sender{
NSLog(@"Map Button Pressed");
[[NSNotificationCenter defaultCenter] postNotificationName:@"mapButtonPressed" object:nil ] ;
}
, при этом в текущем представлении запускается функция, выдвигающая вид карты настек.
-(void)openListMap:(NSNotification *)aNotification {
mapViewController = [[MapViewController alloc] initWithNibName:@"MapViewController" bundle:nil];
NSLog(@"Map Created");
mapViewController.searchLocation = searchLocation;
if(givenLocationType == @"input"){
mapViewController.inputLocationText = inputLocationText;
}
mapViewController.givenLocationType = givenLocationType;
CultureNOWAppDelegate *delegate =
[[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:mapViewController
animated:YES];
}
Теперь это работает, я изменил последнюю строку с:
CultureNOWAppDelegate *delegate =
[[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:mapViewController
animated:YES];
на:
[self.navigationController pushViewController:mapViewController animated:YES];
В результате, хотя openListMap функция по-прежнему срабатывает несколько раз (вы можете видеть в консоли, что в выводе журнала отображается «Карта создана» при каждом появлении представления с момента запуска приложения), она только помещает в стек новейший mapView.
Но почему?Во-первых, почему он запускался несколько раз, и почему он остановился, обмениваясь двумя частями кода, которые для всех намерений и целей одинаковы?
Спасибо за любые мысли.