2011-02-23 74 views
0

我试图将视图控制器推入堆栈时发现了一个奇怪的行为。以下工作正常:pushViewController仅适用于动画:是的

[self.navigationController pushViewController:myViewController animated:YES]; 

,但如果我将其更改为animated:NO它不再起作用,似乎并没有在所有的推动。我在viewWillAppear中执行此操作,但我也尝试过viewDidAppear,但没有运气。

任何想法可能导致这种情况?

感谢

回答

0

问题是最有可能不是调用本身,但调用的位置。尝试在UIButton上放置相同的动作,它应该100%的工作。我注意到把presentModal ...和pushViewController这样的视图控制器操作例程放在viewWill * viewDid *方法中有时候不会工作。或者尝试使用performSelector:withObject:afterDelay在短暂延迟后从那些函数中调用,看看是否有效。

编辑:有几种方法可以做你想做的事情。您可以直接修改导航控制器的导航堆栈,因此,当您在视图N + 1中时,可以替换堆栈上的视图N(通过构建新的导航堆栈阵列并将其设置到导航控制器中),然后弹出,你会得到“回弹到不同的视图控制器”的效果。您也可以发出多种持久性有机污染物,并从要离开的视图控制器推,但你必须要小心:

// pop back 2 controllers on the stack to the setup screen 
// 

// locally store the navigation controller since 
// self.navigationController will be nil once we are popped 
// 
UINavigationController *navController = self.navigationController; 

// retain ourselves so that the controller will still exist once it's popped off 
// 
[[self retain] autorelease]; 

// Pop back 2 controllers to the setup screen 
// 
[navController popViewControllerAnimated:NO]; 
[navController popViewControllerAnimated:YES]; 
+0

当作为一个UIButton一个动作完成它确实工作。问题是我这样做时,从另一个viewcontroller返回,我希望能够更改之前viewcontroller我退回从视图中删除之前可见的viewcontroller。 – Toby 2011-02-23 09:36:47

+0

非常感谢,正是我所需要的。 – Toby 2011-02-23 11:19:13

相关问题