我是使用此方法的新手,所以我可能会完全错误,所以这是我的代码:
@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
答案 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];