Я уверен, что это моя проблема, а не что-то с классом 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, который я вставляю?]