了解iOS中的视图层次结构

时间:2012-12-04 04:43:07

标签: ios uiviewcontroller

我熟悉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通过推送/弹出,标签按下,显示模式等来显示自己的视图的情况.addSubview我不是很熟悉并且没有不知道这是好事还是坏事。谢谢!

1 个答案:

答案 0 :(得分:1)

您想要使用transitionFromViewController:toViewController。它负责添加/删除子视图。这是一个例子......

[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];
                        }];