2013-01-11 85 views
0

我有问题,导航控制器的NavigationController..My流创建堆是这样嵌套的UINavigationController流损坏

壳体1: -A--->B--->C 壳体2: -D--->B--->C

这是实际flow来调用navigationController,其中A,B,C,D是不同的堆栈。 我用这种方法把这些堆栈:

B *b=[[B alloc]init] 
[[self navigationController]pushViewController:b animated:YES]; 

问题 当我为了A-->B-->C移动,然后向后导航C-->B-->A 这个工程的罚款..now如果我移动到D-->B当再次,但它需要我在C

错误nested push animation can result in corrupted navigation 为什么这个错误来了?

注意.. A and D在同一个堆栈上。

+0

当你再次移动到D - > B时,共享代码... – Vishal

+0

与我上面使用的相同(编辑)...检查我已经在移动A - > B中纠正。 –

+0

@Vishal can你告诉我..我们导航返回..哪种方法被称为? ViewDidLoad我不认为会被称为 –

回答

1

试试这个...希望它会帮助你...

NSArray *viewContrlls=[[self navigationController] viewControllers]; 
for(int i=0;i<[ viewContrlls count];i++) 
{ 
    id obj=[viewContrlls objectAtIndex:i]; 
    if([obj isKindOfClass:[Yourclassname class]]) 
    { 

     [[self navigationController] popToViewController:obj animated:YES]; 
     return; 
    } 
} 

Yourclassname is your class which you want to push or pop and nothing to change 
0

或者试试这个,每当你推一个VC

YourAppDelegate *delegate=(YourAppDelegate*)[[UIApplication sharedApplication] delegate]; 
[delegate.window.navigationController pushViewController:whateverVCYouWant]; 

这将只有一个导航堆栈,因此所有推送和弹出发生在一个堆栈中。

相关问题