【问题标题】:Navigation issue in iOS 7iOS 7 中的导航问题
【发布时间】:2015-12-10 06:11:30
【问题描述】:

我想跳到我的应用程序中的特定课程。 它在 iOS 8 中运行良好,但

问题 在 iOS 7 中:它给了我类似“在意外状态下完成导航转换。导航栏子视图树可能会损坏”的错误

我的代码如下

for (UIViewController *controller in self.navigationController.viewControllers)
            {
                if ([controller isKindOfClass:[MyAccountVC class]])
                {
                    [self.navigationController popToViewController:controller animated:YES];

                    break;
                }
            }

【问题讨论】:

  • 你在哪里调用这个代码?
  • @Nishant,我调用了 ViewWillDisappear 方法,我也尝试了 ViewDidDisappear 但不起作用

标签: ios objective-c iphone ios7 uinavigationcontroller


【解决方案1】:

第 1 点: 在视图从导航堆栈弹出之前调用 viewWillDisapear。在其中编写另一个popToViewController 方法将导致转换冲突,因为两个转换都是animated:YES

第 2 点:UINavigationController 的后退按钮动作可以通过实现自定义后退按钮来修改,如下代码所示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem *navigationBarbackButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backToView:)]; // you can also use a custom image for back button
    self.navigationItem.backBarButtonItem = navigationBarbackButton;
}


- (IBAction)backToView:(id)sender
{
    for (UIViewController *controller in self.navigationController.viewControllers)
    {
        if ([controller isKindOfClass:[MyAccountVC class]])
        {
            [self.navigationController popToViewController:controller animated:YES];
            break;
        }
    }
}

【讨论】:

  • 请用代码更新您的问题,该代码可以显示viewWillDisappear 被调用的方式/原因。
  • 什么意思?它是自动调用的
  • viewWillDisappear 会被自动调用,例如,当我们编写 popViewController 代码时......那么触发这个的代码或 IBAction 是什么?
  • 当按下导航的后退按钮时调用 viewWillDisappear 并运行代码
  • 在这种情况下,您将使用自己的 IBAction 方法自定义后退按钮,以便它弹出到所需的视图控制器。此代码不适用于默认的后退按钮,甚至不适用于 viewWillDisappear 中的内部。我将为此编辑我的答案。
猜你喜欢
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多