UINavigationController setViewControllers, кажется, не работает для меня - PullRequest
2 голосов
/ 17 января 2012

Я уверен, что это моя проблема, а не что-то с классом navigationController.Я использую NavigationController для отслеживания стека ViewController размером не более 2.Поэтому, когда есть 1 или меньше, я нажимаю новый ВК.Когда есть два I, по сути, замените стек на стек, содержащий новый VC и вычеркнув, где я только что был.Код выглядит следующим образом:

- (IBAction)displayNextView:(id)sender 
{
    FBRightVC *nextVC = [[FBRightVC alloc] init];

    if ([[self.navigationController viewControllers] count] <= 1)
    {
        [self.navigationController pushViewController: nextVC 
                                             animated: YES];
        NSLog(@"iffy");
    } 
    else if ([[self.navigationController viewControllers] count] == 2)
    {
        NSMutableArray *newVCArray = [[NSMutableArray alloc] initWithObjects: 
                                      [[self.navigationController viewControllers] objectAtIndex:0],  nextVC, nil];
        NSLog(@"VC's in newVCArray = %i", [newVCArray count]);
        [self.navigationController setViewControllers: newVCArray animated: NO];
        NSLog(@"VC's in navigationController VC Array = %i", [self.navigationController.viewControllers count]);
        [newVCArray release];
    }
    [nextVC release];
}

Программа работает нормально, но выводится в журнал:

2012-01-16 16: 09: 46.485 SA101 [7671: f803] VC в newVCArray = 2

2012-01-16 16: 09: 46.486 SA101 [7671: f803] VC в navigationController VC Array = 0

Итак, массив ViewController, который яЯ помещаю в это правильный размер.Но размер массива ViewControllers, сообщаемого самим навигационным контроллером, равен 0. Я не беспокоюсь об этом, но озадачен и любопытен.Причина, по которой я не волнуюсь, заключается в том, что оператор else всегда выполняется в следующий раз, что означает, что на самом деле в этом месте в стеке navigationControllers находятся два VC.Может ли кто-нибудь объяснить мне, почему немедленный запрос возвращает результат, отличный от более позднего запроса, в навигационный контроллер?

[ Эта часть ответила в комментариях - Возможно, связанный с этим вопрос: Должен ли я выпустить NSMutableArray, который я выделяю для хранения нового стека ViewController, который я вставляю?]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...