Почему 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методы.

Другие вопросы по тегам