toolbarItems не выдвигаются с представлением - PullRequest
1 голос
/ 22 января 2010

У меня есть приложение для 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 на панели инструментов. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 22 января 2010

Попробуйте выдвинуть «дочерний» контроллер представления из viewDidAppear вместо viewWillAppear.

...