我的情况是我需要在代码中创建自定义容器视图控制器,但是从中我想要去故事板中创建的视图,所以我不必在代码中进行所有布局。如果我在代码中创建它们,我可以转换到视图,就像现在只设置背景颜色一样。
这是我的情况图。绿色VC在故事板中完成,红色的VC在代码中完成,蓝色的VC在代码中工作但如果我在故事板中设计然后尝试通过身份检查员链接,则不加载。
这里是我如何到达红色导航控制器(A):
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self openContainer];
}
- (void)openContainer {
CustomContainerViewController *customContainer = [[CustomContainerViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:customContainer];
navController.toolbarHidden = NO;
[self presentViewController:navController animated:YES completion:nil];
}
这是从自定义控制器到详细视图vontrollers 1,2和3的segue :(我修剪了与动画相关的底部的一些代码。)
-(IBAction)tabTapped:(id)sender
{
NSLog(@"You selected segment %ld", (long) [sender selectedSegmentIndex]);
switch ([sender selectedSegmentIndex]) {
case 0:
[self loadViewController:[[ViewController1 alloc] init] fromLeft:NO];
break;
case 1:
if ([self.currentVC isKindOfClass:[ViewController1 class]]) {
[self loadViewController:[[ViewController2 alloc] init] fromLeft:YES];
} else {
[self loadViewController:[[ViewController2 alloc] init] fromLeft:NO];
}
break;
case 2:
[self loadViewController:[[ViewController3 alloc] init] fromLeft:YES];
break;
default:
break;
}
}
- (void)loadViewController:(UIViewController *)vc
fromLeft:(BOOL)fromLeft
{
[self addChildViewController:vc];
if (!self.currentVC) {
[self.view addSubview:vc.view];
vc.view.frame = self.view.bounds;
self.currentVC = vc;
return;
}
}
我尝试从容器视图控制器访问故事板,因此我可以实例化ViewControllerWithIndentifier,但由于容器不是故事板的一部分,所以它不起作用。
想法?
感谢。