代码之家  ›  专栏  ›  技术社区  ›  JOM agenthunt

如何知道UIView何时完全隐藏?

  •  4
  • JOM agenthunt  · 技术社区  · 16 年前

    通过切换“隐藏”在两个视图之间切换

    已尝试将断点设置为viewDidLoad、viewDidUnload、viewWillAppear、ViewWillEnglishe、ViewDidEnglishe、becomeFirstResponder和resignFirstResponder。没有什么。当我设置hidden=YES/NO时,这些都不会被调用。

    if (self.aController)
        self.aController.view.hidden = YES;
    if (self.bController)
        self.bController.view.hidden = NO;
    [self.bController viewWillAppear:YES];
    

    我称之为视图将自己出现,因为该视图是。。。uitabaritem下视图的子视图的子视图。Apple docs告诉我们,这种设置是不自然的 一些自动通知必须手动完成 . 这是不是同样的问题,没有得到becomeFirstResponder和辞职FirstResponder这应该是有关隐藏状态?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Giao    16 年前

    Key-Value Observation 观察 hidden 任一视图的属性。触发更改后,您将收到有关更改的消息。

        2
  •  3
  •   JOM agenthunt    16 年前

    解决问题的一种方法 . 由于我在子视图中不获取自动通知,但在主视图中获取通知,所以我只是自己“转发”通知:

    - (void) viewWillAppear:(BOOL)animated
    {
    [super viewWillAppear:animated];
    
    // called at tab switch
    if (self.aController)
        [self.aController viewWillAppear:YES];
    if (self.bController)
        [self.bController viewWillAppear:YES];
    }
    
    - (void) viewWillDisappear:(BOOL)animated
    {
    [super viewWillDisappear:animated];
    
    // called at tab switch
    if (self.aController)
        [self.aController viewWillDisappear:YES];
    if (self.bController)
        [self.bController viewWillDisappear:YES];
    }
    

    推荐文章