addChildViewController给出NSException错误?

时间:2014-06-01 18:18:07

标签: ios objective-c

我是使用此方法的新手,所以我可能会完全错误,所以这是我的代码:

@property (nonatomic, weak) ConverterViewController *converterViewController;
@property (nonatomic, weak) CalculatorViewController *calculatorViewController;

如果我正确理解了这段代码,它们就可以作为对两个不同ViewControllers的引用。

然后我在viewDidAppear方法中有这个:

[self addChildViewController:_converterViewController];
[_converterViewController didMoveToParentViewController:self];
[self.view addSubview:_converterViewController.view];

当我尝试将其添加为子视图控制器时,我在第一行收到NSException。所以不知道这是否应该在我的ConverterViewController类中调用一些方法我在该类中放置了一些断点,包括initWithNibName和viewDidLoad方法,我发现这些方法都没有被调用,所以我不确定是什么问题。然后我再也不确定会出现什么问题,所以非常感谢任何帮助。

这是我从控制台获得的全部内容:

libc++abi.dylib: terminating with uncaught exception of type NSException

1 个答案:

答案 0 :(得分:2)

更新答案:

[self addChildViewController:_converterViewController];未创建converterViewController 它只需要converterViewController个对象,然后将其childViewController添加到self

您需要在converterViewController之前分配内存并实例化对象-addChildViewController:,否则它的值将为nil,不会发生任何事情。

所以......这个:

_converterViewController = [[ConverterViewController alloc] initWithNibName:@"ConverterViewController"
                                                                     bundle:nil];

//now... adding it as childViewController should work
[self addChildViewController:_converterViewController];
[_converterViewController didMoveToParentViewController:self];
//optional: give it a frame explicitly so you may arrange more childViewControllers
//[_converterViewController.view setFrame:CGRectMake(0,0,100,100)];
[self.view addSubview:_converterViewController.view];