为什么 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
}
并在需要的地方调用它。
但是,也许,如果您只需要更新布局,您可以查看 setNeedsLayout
和 layoutIfNeeded
方法。
我正在像这样对 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
}
并在需要的地方调用它。
但是,也许,如果您只需要更新布局,您可以查看 setNeedsLayout
和 layoutIfNeeded
方法。