【问题标题】:Why isn't viewWillDisappear or viewDidAppear being called?为什么不调用 viewWillDisappear 或 viewDidAppear ?
【发布时间】:2011-05-16 10:24:15
【问题描述】:

我有一个UINavigationController 和一个UITableView 作为我的主菜单。用户单击一个单元格,一个新视图被推送到堆栈上。在一种情况下,我推送另一个需要工具栏的UITableView。因此,在第二个 tableView 的初始化中,我使用正确的项目设置了 self.toolbarItems 属性。但是我需要调用[self.navigationController setToolbarHidden:NO animated:YES]; 所以在viewDidAppearviewWillAppear 方法中调用它是有意义的。但是我把它放在那些方法中并发现(也通过 NSLog)它们永远不会被调用。将其隐藏在viewWillDisappearviewDidDisappear 中也是如此。为什么不调用这些方法?那我应该在哪里隐藏/显示工具栏呢?

【问题讨论】:

    标签: iphone ipad ios uiviewcontroller


    【解决方案1】:

    我注意到如果父控制器(如UINavigationControllerUITabBarController)永远不会调用它的viewWill/DidAppear,它也不会在子控制器上调用它。所以请确保在创建父控制器的代码中调用viewWillAppear,显示它,然后调用viewDidAppear。然后它应该在适当的时候对它的子控制器进行调用。

    仔细检查父控制器是否调用了这些方法,如果没有调用,请自行调用。

    【讨论】:

    • 实际上,您还可以检查您是否在 iOS5 上运行 - 我注意到,与 iOS4 不同,viewDidAppear:animated 被调用用于具有 parentViewController 的 UIViewController 而无需任何额外设置
    【解决方案2】:

    是的,这是真的

    你可以先在

    中写下这段代码
    - (void)viewDidLoad {
        self.navigationController.delegate = self;  
    }
    

    然后在viewWillAppear中写下你想写的代码

    - (void)navigationController:(UINavigationController  *)navigationController didShowViewController:(UIViewController  *)viewController animated:(BOOL)animated {
    
        if ([viewController isKindOfClass:[self class]]) {
            //write your code here
        } 
    }
    

    【讨论】:

      【解决方案3】:

      虽然你解决了你的问题,但万一将来有人出现,另一个问题可能是你忘记了任一方法的动画:参数 - 也就是说,方法的格式需要如下所示:

      - (void) viewWillAppear:(BOOL)animated
      

      【讨论】:

        【解决方案4】:

        我在 iOS7 中发现了同样的问题。当我同时使用标签栏(2 个按钮 A、B)和导航控制器时。

        A 有两个视图。一个带有表格视图,第二个根据表格视图中的选择显示数据。

        B has 是唯一的视图。

        引用另一个单独视图 D 的按钮,放置在两个选项卡栏视图(A 和 B)和 A 的两个视图中。

        当我单击选项卡项 B 中的按钮时出现问题,viewWillAppearviewDidLoad 未调用。

        所以我通过presentModalViewController:animated: 解决了这个问题,回来时我使用了dismissModalViewControllerAnimated:,就在我从标签项B 中查看D 时。

        【讨论】:

          猜你喜欢
          • 2010-12-03
          • 1970-01-01
          • 1970-01-01
          • 2014-04-12
          • 1970-01-01
          • 1970-01-01
          • 2014-03-21
          • 2012-10-31
          • 2014-04-22
          相关资源
          最近更新 更多