简单地说,我已经构建了一个没有导航控制器的应用程序,所以一切都是通过我的ViewController控制的。自添加导航控制器以来,我添加了一个按钮,从我的ViewController翻转到我的主导航控制器窗口。但是,当我按下按钮时,它会重新加载同一个窗口,导航栏现在位于顶部(我将其隐藏在原始视图中)。如果我再次按下相同的按钮,则会加载正确的视图。我做错了什么导致这个循环?
我的按钮代码
-(IBAction) btnSettings_Clicked: (id) sender {
self.navigationController.navigationBarHidden = FALSE;
[UIView beginAnimations:@"Flip View" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
MyAppDelegate* appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:[self.navigationController view] cache:YES];
[UIView commitAnimations];
[appDelegate.navigationController popViewControllerAnimated:NO]; }
答案 0 :(得分:0)
我相信这就是这条线
[self.navigationController view]
您应该将动画设置为您想要显示的控制器,而不是当前控制器。
答案 1 :(得分:0)
如果此代码在ViewController中,并且如您所说,此控制器未在导航控制器上推送,则错误为:
[self.navigationController view] ;
因为自己没有导航控制器。您必须将其替换为:
[appDelegate.navigationController view] ;
因为我认为这是正确使用的导航控制器。
然后,你为什么要弹出顶视图控制器?如果你想删除self.view,那么你只需要这样做:
[self.view removeFromSuperview];