解除模态视图层次结构 - 一个优雅的解决方案

时间:2011-04-23 23:34:28

标签: iphone objective-c cocoa-touch ios modalviewcontroller

我有一个像这样的视图层次结构:

  1. 从app delegate显示的自定义视图控制器(Say view controller 1)。
  2. 从视图控制器1以模态方式显示的另一个视图控制器(Say view controller 2)。
  3. 从视图控制器2以模态方式显示的另一个视图控制器(Say视图控制器3)。
  4. 还有一个视图控制器(Say view controller 4),我需要按照步骤2& 3。
  5. 现在在一些活动中,我需要取消整个模态视图层次结构。所以我正在做的是,我正在从视图控制器3发送关于该事件的通知,并在视图控制器中监听该通知,然后执行:

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"cancelViews" object:nil];
    

    这有效,但有一个问题。根据我的应用程序流程,我最终在视图控制器1和视图控制器4上注册此通知。现在,当视图控制器1的整个模态层次结构已启动并且通知由VC1注册,然后在另一个视图层次结构之上显示视图控制器4,最后当抛出通知时,我的视图层次结构都消失了。

    我只希望我最顶层的视图层次结构消失。任何解决方案都会有所帮助。

1 个答案:

答案 0 :(得分:1)

Use delegates

如果这不是您想要的路线(即使我强烈建议您这样做),您可以设置1和4视图控制器来发布根视图控制器将侦听的不同事件。