UINavigationController setViewControllers似乎不适合我

时间:2012-01-16 23:22:11

标签: iphone ios uinavigationcontroller

我确信这是我的问题,而不是使用navigationController类。我正在使用NavigationController来跟踪最多2个大小为2的ViewControllers。所以当有一个或更少的时候我推开一个新的VC。当我有两个基本上,用一个包含新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 in newVCArray = 2

2012-01-16 16:09:46.486 SA101 [7671:f803]导航控制器VC阵列中的VC = 0

因此我放入的ViewController数组大小合适。但是导航控制器本身报告的ViewControllers数组的大小是0.我并不担心这个但是感到困惑和好奇。我不担心的原因是else语句总是在下次执行时执行 - 这意味着此时在navigationControllers堆栈中实际上有两个VC。有人可以告诉我为什么立即查询返回的结果不同于后来对navigationController的查询?

[这部分在评论中回答 - 一个可能相关的问题是:我是否应该发布我分配的NSMutableArray来保存我正在放入的新ViewController堆栈?]

0 个答案:

没有答案