Ios 为什么';n内部一致性异常';覆盖时发生';使用编码器初始化';方法
当我在与情节提要关联的Ios 为什么';n内部一致性异常';覆盖时发生';使用编码器初始化';方法,ios,objective-c,Ios,Objective C,当我在与情节提要关联的viewcontroller中编写以下代码时,遇到异常“nsinternalinconsistenceexception”: - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { self.view.backgroundColor = [UIColor blackColor]; } return
viewcontroller
中编写以下代码时,遇到异常“nsinternalinconsistenceexception
”:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
self.view.backgroundColor = [UIColor blackColor];
}
return self;
}
但是,如果我删除行'self.view.backgroundColor=[UIColor blackColor]代码>',没有问题。我不知道原因
实际上,在stroyboard中,我有几个控制器,我想为所有控制器创建一个基本控制器。目的是我想为它们设置一个背景视图(UIView)
我尝试在basecontroller的viewDidLoad
方法中添加UIView
,但该视图包含在情节提要中设置的所有组件。我认为原因是,在调用“ViewDidLoad
”方法之前,子viewcontrollers上的组件是在“initWithCoder
”方法中初始化的。因此,我尝试在basecontroller的“initWithCoder”方法中添加bgView,这导致了上述问题
所以我也想知道一个正确的方法来实现我的目标。谢谢 不要在init中设置与图形相关的属性,并将子视图放在前面。把他们从
-(void)awakeFromNib
{
[self.view.superview bringSubviewToFront:self.view];
self.view.backgroundColor = [UIColor blackColor];
}
整个错误消息是什么?为什么不像你说的那样简单地将其添加到viewDidLoad中,然后将其发送到后面,这样它就不能覆盖其他视图。当您在super上调用viewDidLoad时,它将进入最向后的位置,就是这样。