gpt4 book ai didi

ios - 为什么覆盖 'NSInternalInconsistencyException'方法时会发生 'initWithCoder'

转载 作者:行者123 更新时间:2023-11-29 12:48:00 29 4
gpt4 key购买 nike

当我在与 Storyboard关联的 viewcontroller 中编写以下代码时,我遇到了异常“NSInternalInconsistencyException”:

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
self.view.backgroundColor = [UIColor blackColor];
}
return self;
}

但是,如果我删除行 'self.view.backgroundColor = [UIColor blackColor];',就没有问题了。我不知道原因。

实际上,在 stroyboard 中我有几个 Controller ,我想为所有 Controller 制作一个基本 Controller 。目的是我想为他们设置一个背景 View (UIView)。

我尝试在 basecontroller 的 viewDidLoad 方法中添加一个 UIView,但该 View 覆盖了 Storyboard中设置的所有组件。我认为原因是 subview Controller 上的组件在调用“ViewDidLoad”方法之前在“initWithCoder”方法中进行了初始化。所以我尝试在basecontroller的'initWithCoder'方法中添加bgView,这导致了上面的问题。

所以我也想知道一个正确的方法来达到我的目的。谢谢!

最佳答案

不要在 init 中设置图形相关的属性并将 subview 放在前面。设置它们从

-(void)awakeFromNib
{
[self.view.superview bringSubviewToFront:self.view];
self.view.backgroundColor = [UIColor blackColor];
}

关于ios - 为什么覆盖 'NSInternalInconsistencyException'方法时会发生 'initWithCoder',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152580/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com