在多个视图控制器中重用一个容器视图
re-using one container view in multiple view controllers
我在我的主视图控制器中设置了一个容器视图。我通过界面生成器配置了它。主视图控制器包含容器视图,我有自定义 class(派生自 UIViewController)来处理容器视图控制器中的工作。我已经在容器视图中布置了所有小部件,并且一切正常。现在,我发现了一种情况,我想在不同的视图控制器中重复使用相同的代码。
所以我从以下开始验证代码是否被命中:
iPad_Expansion_ContViewController *kaufer = [iPad_Expansion_ContViewController new];
[gameController addChildViewController:kaufer];
kaufer.view.frame = CGRectMake(100, 200, 500, 500);
kaufer.view.backgroundColor = [UIColor blueColor];
[gameController.view addSubview:kaufer.view];
[gameController.view bringSubviewToFront:kaufer.view];
[kaufer didMoveToParentViewController:gameController];
这确实创建了一个大蓝框;但是,如何加载通过界面生成器定义的 containerViewController 的内容?我想我需要类似下面的东西,但我不知道在哪里可以找到通过 Interface Builder 创建的 NIB 名称。
iPad_Expansion_ContViewController *kaufer = [[iPad_Expansion_ContViewController alloc] initWithNibName:@"???????" bundle:[NSBundle mainBundle]];
[gameController addChildViewController:kaufer];
[kaufer didMoveToParentViewController:gameController];
从我所有的网络搜索来看,查找 NIB 名称似乎是微不足道且显而易见的。但我仍然遗漏了一些东西......我尝试使用故事板的名称;然而,kaufer 中的所有对象都为零,并且屏幕上没有显示任何视图。
好吧,这是一个非常艰难的下午。毕竟我并不疯狂(至少在这件事上没有):从 Xcode 6.4 开始,在情节提要中找到 .xib 名称 viewControllers 比以前的版本要困难几个数量级。这两个问题并没有完全解决问题,但提供了让我再次感动的主要线索:
Use initWithNibName with a storyboard
STORYBOARD - doesn't contain a view controller with identifier(khaliq 的回答)
事不宜迟,我在互联网上发布了以下(功能)代码片段:
UIStoryboard *storyboard = self.storyboard;
myCustomContViewController *kaufer = (myCustomContViewController *)[storyboard instantiateViewControllerWithIdentifier:@"shopper"];
[mainController addChildViewController:kaufer];
[mainController.view addSubview:kaufer.view];
[mainController.view bringSubviewToFront:kaufer.view];
[kaufer didMoveToParentViewController:mainController];
我在我的主视图控制器中设置了一个容器视图。我通过界面生成器配置了它。主视图控制器包含容器视图,我有自定义 class(派生自 UIViewController)来处理容器视图控制器中的工作。我已经在容器视图中布置了所有小部件,并且一切正常。现在,我发现了一种情况,我想在不同的视图控制器中重复使用相同的代码。
所以我从以下开始验证代码是否被命中:
iPad_Expansion_ContViewController *kaufer = [iPad_Expansion_ContViewController new];
[gameController addChildViewController:kaufer];
kaufer.view.frame = CGRectMake(100, 200, 500, 500);
kaufer.view.backgroundColor = [UIColor blueColor];
[gameController.view addSubview:kaufer.view];
[gameController.view bringSubviewToFront:kaufer.view];
[kaufer didMoveToParentViewController:gameController];
这确实创建了一个大蓝框;但是,如何加载通过界面生成器定义的 containerViewController 的内容?我想我需要类似下面的东西,但我不知道在哪里可以找到通过 Interface Builder 创建的 NIB 名称。
iPad_Expansion_ContViewController *kaufer = [[iPad_Expansion_ContViewController alloc] initWithNibName:@"???????" bundle:[NSBundle mainBundle]];
[gameController addChildViewController:kaufer];
[kaufer didMoveToParentViewController:gameController];
从我所有的网络搜索来看,查找 NIB 名称似乎是微不足道且显而易见的。但我仍然遗漏了一些东西......我尝试使用故事板的名称;然而,kaufer 中的所有对象都为零,并且屏幕上没有显示任何视图。
好吧,这是一个非常艰难的下午。毕竟我并不疯狂(至少在这件事上没有):从 Xcode 6.4 开始,在情节提要中找到 .xib 名称 viewControllers 比以前的版本要困难几个数量级。这两个问题并没有完全解决问题,但提供了让我再次感动的主要线索:
Use initWithNibName with a storyboard
STORYBOARD - doesn't contain a view controller with identifier(khaliq 的回答)
事不宜迟,我在互联网上发布了以下(功能)代码片段:
UIStoryboard *storyboard = self.storyboard;
myCustomContViewController *kaufer = (myCustomContViewController *)[storyboard instantiateViewControllerWithIdentifier:@"shopper"];
[mainController addChildViewController:kaufer];
[mainController.view addSubview:kaufer.view];
[mainController.view bringSubviewToFront:kaufer.view];
[kaufer didMoveToParentViewController:mainController];