为什么 UIViewController viewWillAppear 在从 superView 中删除子视图后不会 运行

why will UIViewController viewWillAppear not run after subViews are removed from 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 显示为 运行,但事实并非如此。

我正在像这样删除子图层

[self.capture.layer removeFromSuperlayer];

当原始视图再次出现时,viewWillAppear 不应该 运行 吗?

如果不是,我如何确保我在 viewWillAppear 中的代码在我删除子图层时 运行?

按照建议检查 Apple doc 以了解视图生命周期。 然后你可以把你的 viewWillAppear 代码放在一个新的方法中:

-(void)yourFunctionName {
    //your code here 
}

并在需要的地方调用它。

但是,也许,如果您只需要更新布局,您可以查看 setNeedsLayoutlayoutIfNeeded 方法。