问题是最有可能不是调用本身,但调用的位置。尝试在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];
当作为一个UIButton一个动作完成它确实工作。问题是我这样做时,从另一个viewcontroller返回,我希望能够更改之前viewcontroller我退回从视图中删除之前可见的viewcontroller。 – Toby 2011-02-23 09:36:47
非常感谢,正是我所需要的。 – Toby 2011-02-23 11:19:13