я наткнулся, за исключением «NSInternalInconsistencyException
», когда я пишу код ниже в viewcontroller
, который связан с раскадровки:Почему «NSInternalInconsistencyException» происходит, когда метод ПЕРЕЗАПИСАТЬ «initWithCoder»
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
self.view.backgroundColor = [UIColor blackColor];
}
return self;
}
Однако, если я удалить строка 'self.view.backgroundColor = [UIColor blackColor];
', нет проблем. Я не знаю причины.
На самом деле, в стройнике есть несколько контроллеров, и я хочу создать базовый контроллер для всех контроллеров. Целью является то, что я хочу установить для них фоновый вид (UIView).
Я пытаюсь добавить UIView
в метод basecontroller viewDidLoad
, но вид охватывает любые компоненты, установленные в раскадровке. Я думаю, причина в том, что компоненты на контроллерах sub view инициализируются в методе 'initWithCoder
' до вызова метода 'ViewDidLoad
'. Поэтому я пытаюсь добавить bgView в метод «initWithCoder» базового контролера, и это привело к проблеме выше.
Так что я также хочу знать правильный путь для достижения своей цели. Благодаря!
В чем же сообщение об ошибке? – Larme
Почему бы вам не сделать это простым способом, добавив его в viewDidLoad, как вы сказали, а затем отправив его обратно, чтобы он не мог охватить другие виды. Он перейдет в самую отсталую позицию, когда вы вызовете viewDidLoad на супер, чтобы это было так. – Zen