理解iOS中的视图层次结构

理解iOS中的视图层次结构,ios,uiviewcontroller,Ios,Uiviewcontroller,我熟悉UITabBarController和UINavigationController范例,在这些范例中,您可以为不同的选项卡显示一个新的视图控制器,或者推/弹出一个新的视图控制器。我不熟悉的是像Flipboard这样的应用程序。Flipboard将向我展示3个故事的预览。如果我点击其中一个故事,我看到的过渡基本上就是占据屏幕的故事。为了做到这一点,我想知道您设置了什么样的视图层次结构。我最初的直觉是把视图放在彼此的上面,然后隐藏和显示一个视图。我不喜欢这种方法的一点是它看起来很杂乱,特别是在

我熟悉UITabBarController和UINavigationController范例,在这些范例中,您可以为不同的选项卡显示一个新的视图控制器,或者推/弹出一个新的视图控制器。我不熟悉的是像Flipboard这样的应用程序。Flipboard将向我展示3个故事的预览。如果我点击其中一个故事,我看到的过渡基本上就是占据屏幕的故事。为了做到这一点,我想知道您设置了什么样的视图层次结构。我最初的直觉是把视图放在彼此的上面,然后隐藏和显示一个视图。我不喜欢这种方法的一点是它看起来很杂乱,特别是在IB中有很多元素相互重叠的情况下。有更好的方法吗?创建新的viewController并执行以下操作是否更好

- (IBAction)showDetailView:(id)sender {
   [self.view addSubview:detailController.view]; // have the detailController.view as an ivar so we can reference it later
}

- (IBAction)removeDetailView:(id)sender {
   [detailControllerIvar.view removeFromSuperview];
}

抱歉,如果这是一个基本问题。我不太熟悉这样的情况:我不只是使用ViewController通过推/弹出、tab-press、show-modal等方式显示自己的视图。我不太熟悉addSubview,也不知道这是好还是坏的做法。谢谢

您希望使用从ViewController:到ViewController的转换。它负责添加/删除子视图。这里有一个例子

[self addChildViewController:toViewController];
[fromViewController willMoveToParentViewController:nil];

[self transitionFromViewController:fromViewController
                  toViewController:toViewController
                          duration:1.0f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{}
                        completion:^(BOOL completed){
                            [fromViewController removeFromParentViewController];
                            [toViewController didMoveToParentViewController:self];
                        }];