【问题标题】:popViewController not working in iOS 9popViewController 在 iOS 9 中不起作用
【发布时间】:2023-03-20 19:35:02
【问题描述】:

我从 BaseViewController 继承了我的 ViewController,并使用情节提要 ID 推送了我的 SecondViewController。但是,当我尝试从第二个视图弹出视图到视图控制器时,它不起作用。 这是我的代码:

dispatch_async(dispatch_get_main_queue(), ^{
                [self showMesssgeonAlert:@"Success"];
                [self hideProgress];
                [self.navigationController popViewControllerAnimated:TRUE];
            });

即使我尝试过:

NSArray *controllerArray = self.navigationController.viewControllers;

for (id controller in controllerArray)
{
    if ([controller isKindOfClass:[ViewController class]])
    {
[self.navigationController popViewControllerAnimated:TRUE];
    }
}

但是,它在这两种情况下都不起作用。我该怎么办?请帮助我。

【问题讨论】:

  • 您检查self.navigationController 是否不是nil
  • 确保两个视图控制器在同一个 UINavigationController 堆栈上?

标签: ios objective-c iphone popviewcontrolleranimated


【解决方案1】:

确保您将控制器 SecondViewController 推送到 ViewController 上,如果您使用的是 segue,请检查显示类型,如(Push,Present Modally)。如果这是正确的,那么检查导航控制器对象,它应该有一个对象。

最后在两个视图控制器做加载方法中检查导航控制器的内存地址。它应该相同。

【讨论】:

    【解决方案2】:

    您应该仔细检查:

    1. 两个视图控制器应该在同一个导航控制器堆栈上。

    2. 我猜,第二个视图控制器在不同的导航控制器上。

    3. 你是如何推送到第二个视图控制器的?

    【讨论】:

    • 如何检查视图控制器是否在不同的导航控制器上?并且我正在 pushViewController:animated: 在发生现有转换或演示时调用 ;导航堆栈不会更新。
    • 只打印:[self.navigationController viewControllers]
    【解决方案3】:

    尝试使用 appDelegates 导航控制器,尝试如下:

    dispatch_async(dispatch_get_main_queue(), ^{
                    [self showMesssgeonAlert:@"Success"];
                    [self hideProgress];
                    [((AppDelegate*)[[UIApplication sharedApplication]delegate]).navigationController popViewControllerAnimated:TRUE];
                });
    

    【讨论】:

      【解决方案4】:

      拆分视图控制器可能会导致此问题,在我的情况下,我将其删除,popViewController 开始工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多