如何获得在故事板中查看控制器以便在容器控制器内进行转换的句柄

时间:2013-12-17 00:10:16

标签: ios

我的问题是我想调用transitionFromViewController:toViewController :::来更改容器视图中的视图控制器。但是如果第一个控制器不是以编程方式创建的,而是由故事板创建的,那么我如何获取它的句柄才能将其传递给transitionFromViewController?

更多详情:

我想在app启动时创建一个包含控制器A或控制器B的容器控制器,具体取决于从默认值中读取的标志。

在我的故事板中,我在初始控制器中放置了一个容器视图,当这样做时,IB会自动创建一个链接的VC场景,我将其设置为视图控制器A.

我还为视图控制器B创建了一个场景(但是无法将其链接到初始视图控制器,因为这样做会断开视图控制器A.因此我假设IB只允许一个VC连接到容器视图)。

在初始控制器的viewDidLoad中,我打算调用transitionToViewController,根据状态标志从控制器A切换到控制器B. 问题是如何获得控制器A的句柄?我没有在代码中创建控制器A,IB正在自动创建 - 所以我尝试在初始控制器中为它添加属性,但IB不允许我使用控制器A和属性之间的IB助手拖放链接。那么我怎么能得到它的句柄才能将它传递给transitionToViewController:?

1 个答案:

答案 0 :(得分:0)

如果您在故事板上使用容器视图嵌入子控制器,那么您可以通过viewDidLoad中的以下代码获取子控制器

AController = [self.childViewControllers lastObject];

如果有多个子视图控制器,那么你可以迭代self.childViewControllers来查找每一个。

您可以实例化B Controller以调用transitionFromViewController

[self.storyboard instantiateViewControllerWithIdentifier:@"BController"];

然后你打电话给这样的话     。     。     

[AController willMoveToParentViewController:nil];
[self addChildViewController:BController];

[self transitionFromViewController:AController
                  toViewController:BController
                          duration:0.0f
                           options:UIViewAnimationOptionTransitionNone
                        animations:^{
                        }
                        completion:^(BOOL finished) {
                            [BController didMoveToParentViewController:self];
                            [AController removeFromParentViewController];
                        }];