如何将子视图添加为视图控制器视图的子视图?

时间:2014-06-01 19:54:08

标签: ios objective-c addsubview

到目前为止,我已将子视图添加到主视图控制器中。但是我希望这个子视图是我的视图控制器视图的子视图,所以我试着这样做

[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...

3 个答案:

答案 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];

假设:

  1. 故事板的名称是" Main" (你的可能只是"故事板"

    • Project Targets
  2. 故事板中ConverterViewController的故事板标识符为ConverterViewController

    • Identity Inspector

答案 2 :(得分:0)

对于我的情况,我避免将多个视图作为IB中UI设计的相同视图控制器的一部分,但是在修复我的设计问题之后我又回到了这个方法。这消除了使用子视图控制器所需的所有代码,并使我对此问题的解决方案的需求无效。我在staticVoidMan发布他可能的解决方案之前不久就这样做了,我无意看到他的解决方案是否有效。

尽管我决定使用其他方法,但我非常感谢我收到的有关此事的所有帮助。