带有NavigationController的ViewController循环到自身

时间:2012-02-01 06:12:27

标签: iphone objective-c ios

简单地说,我已经构建了一个没有导航控制器的应用程序,所以一切都是通过我的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]; }

2 个答案:

答案 0 :(得分:0)

我相信这就是这条线

[self.navigationController view]

您应该将动画设置为您想要显示的控制器,而不是当前控制器。

答案 1 :(得分:0)

如果此代码在ViewController中,并且如您所说,此控制器未在导航控制器上推送,则错误为:

[self.navigationController view] ;

因为自己没有导航控制器。您必须将其替换为:

[appDelegate.navigationController view] ;

因为我认为这是正确使用的导航控制器。

然后,你为什么要弹出顶视图控制器?如果你想删除self.view,那么你只需要这样做:

[self.view removeFromSuperview];