到目前为止,我已将子视图添加到主视图控制器中。但是我希望这个子视图是我的视图控制器视图的子视图,所以我试着这样做
[self.view addSubview:_converterViewController.view];
但是这给了我这个错误:
libc ++ abi.dylib:以未捕获的类型异常终止 NSException
我知道这真的很模糊但是出于某种原因,这是我得到的全部。那么我做错了什么?这是我与此任务相关的代码,它全部位于我的视图控制器viewDidAppear方法中。
[self addChildViewController:_converterViewController];
[_converterViewController didMoveToParentViewController:self];
[self.view addSubview:_converterViewController.view];//this line produces the error
感谢您的帮助。
更新错误:
'NSInternalInconsistencyException', reason: 'Could not load NIB...
答案 0 :(得分:1)
以下是添加childViewController
时需要执行的步骤UIViewController *viewController = [UIViewController new];
[self addChildViewController:viewController];
[self.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self];
1 - 创建子视图控制器
2 - 添加是作为孩子的
3 - 将其视图添加到视图层次结构中
4 - 通知childViewController已将其添加到父级。
答案 1 :(得分:0)
对于故事板,请执行:
//instead of
//[[ConverterViewController alloc] init];
//do
//in my case, Storyboard name was "Main"
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
_converterViewController = [storyboard instantiateViewControllerWithIdentifier:@"ConverterViewController"];
//add as childViewController
[self addChildViewController:_converterViewController];
[_converterViewController didMoveToParentViewController:self];
//optional: modify parameters if needed
[_converterViewController.view setBackgroundColor:[UIColor redColor]];
[_converterViewController.view setFrame:CGRectMake(0, 64, 320, 100)];
[self.view addSubview:_converterViewController.view];
故事板的名称是" Main
" (你的可能只是"故事板" )
故事板中ConverterViewController
的故事板标识符为ConverterViewController
答案 2 :(得分:0)
对于我的情况,我避免将多个视图作为IB中UI设计的相同视图控制器的一部分,但是在修复我的设计问题之后我又回到了这个方法。这消除了使用子视图控制器所需的所有代码,并使我对此问题的解决方案的需求无效。我在staticVoidMan发布他可能的解决方案之前不久就这样做了,我无意看到他的解决方案是否有效。
尽管我决定使用其他方法,但我非常感谢我收到的有关此事的所有帮助。