У меня есть приложение для iPhone на основе NavigationController, в котором есть панель навигации и панель инструментов. Вот как это работает:
ApplicationDelegate помещает "SplashScreen" на RootViewController в качестве модального представления. Когда экран-заставка активирован, приложение выполняет некоторую работу, и в зависимости от местоположения пользователя либо просто отклоняет модальное представление, ИЛИ отклоняет модальное представление и помещает другое представление в стек навигации.
И RootViewController, и дочернее представление имеют панели инструментов с кнопкой «Добавить». Моя проблема заключается в следующем: когда автоматически открывается второй вид, кнопка «Добавить» вызывает код для своего контроллера PARENT. Если вы отклоните это, а затем снова нажмете кнопку добавления, он вызовет правильный код.
Вот мой код.
в viewDidLoad RootViewController у меня есть:
addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addClicked:)];
[self setToolbarItems:[NSArray arrayWithObjects:addButton, nil]];
в viewDidLoad дочернего контроллера (LocationListsController) у меня есть:
addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addClicked:)];
[self setToolbarItems:[NSArray arrayWithObjects:addButton, nil]];
(да, один и тот же код, они оба имеют события addClicked)
в RootViewController, viewWillAppear - это то место, где я фактически выдвигаю дочернее представление:
if (((GeoListsAppDelegate *)[[UIApplication sharedApplication] delegate]).selectedIndex != -1)
{
GeoLocation *location = [((GeoListsAppDelegate *)[[UIApplication sharedApplication] delegate]).locations objectAtIndex:((GeoListsAppDelegate *)[[UIApplication sharedApplication] delegate]).selectedIndex];
((GeoListsAppDelegate *)[[UIApplication sharedApplication] delegate]).selectedIndex = -1;
if (lController == nil)
{
LocationListsController *aController = [[LocationListsController alloc] initWithLocation:location];
self.lController = aController;
[aController release];
}
[[self navigationController] pushViewController:lController animated:YES];
}
Нажатие вида работает нормально. Единственная проблема, которую я имею, - это addButton на панели инструментов. У кого-нибудь есть идеи?