【问题标题】:ViewController with NavigationController loops to itself带有 NavigationController 的 ViewController 循环到自身
【发布时间】:2012-02-01 15:20:53
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

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

    [self.navigationController view] ;
    

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

    [appDelegate.navigationController view] ;
    

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

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

    [self.view removeFromSuperview];
    

    【讨论】:

      【解决方案2】:

      我相信是这条线

      [self.navigationController view]
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多