Почему UIViewController viewWillAppear не будет запущен после удаления подвидов из superView
Я делаю подслой для UIViewController, как это
- (IBAction)transactionListViewCameraBtn_Pressed:(id)sender {
if([NWTillHelper isDebug] == 1) {
NSLog(@"%s entered", __PRETTY_FUNCTION__);
}
self.capture = [[ZXCapture alloc] init];
self.capture.camera = self.capture.back;
self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus;
[self.view.layer addSublayer:self.capture.layer];
self.capture.delegate = self;
[self applyOrientation];
}
Проблема в том, что когда я удаляю подслой, я ожидаю, что будет запущен оригинальный viewWillAppear Views, но это не так.
Я удаляю подслой, как это
[self.capture.layer removeFromSuperlayer];
Разве viewWillAppear не должен запускаться при повторном появлении исходного представления?
Если нет, то как я могу гарантировать, что код, который у меня есть в viewWillAppear, будет работать при удалении подслоя?
1 ответ
Решение
Как предложено, проверьте документ Apple для понимания представления жизненного цикла. Затем вы можете поместить свой код viewWillAppear в новый метод:
-(void)yourFunctionName {
//your code here
}
И позвони туда, где тебе нужно.
Но, может быть, если вам просто нужно обновить макет, вы можете проверить setNeedsLayout
а также layoutIfNeeded
методы.