我使用presentViewController方法呈现子视图,如下所示。但是,如果没有有效的许可证,我需要能够停止加载子视图。 我必须从子视图中执行此操作。
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"innerID-iOS-Resources" withExtension:@"bundle"]];
if (bundle) {
if (!self.cameraVC) {
self.cameraVC = [[IDCameraViewController alloc] initWithNibName:@"IDCameraViewController" bundle:bundle];
}
[self.cameraVC willMoveToParentViewController:self];
[self addChildViewController:self.cameraVC];
[self.view addSubview:self.cameraVC.view];
[self.cameraVC didMoveToParentViewController:self];
}
}
有一个回调方法在完成后调用以下closeCameraView方法。 我不想在许可证不存在时使用其他回调。
- (void)closeCameraView
{
[self.cameraVC willMoveToParentViewController:nil];
[self.cameraVC.view removeFromSuperview];
[self.cameraVC removeFromParentViewController];
[self showControls];
}
viewDidLoad是第一个在显示子视图时执行的方法。
我想查看有效的许可证,如果不存在则返回主叫视图。
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self isLicenseValid]) {
self.cameraSettings = [IDCameraSettings cameraSettings];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"License Activation"
message:@"A valid license must be activated for this product."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
//Do not load view
}
}
我尝试了以下两种方法无济于事,并且很难在互联网上找到类似的问题/答案。
[self.view removeFromSuperview];
[self.parentViewController dismissViewControllerAnimated:YES completion:Nil];
有什么想法吗?请。
谢谢你, 露
答案 0 :(得分:1)
当调用viewDidLoad
时,正如方法名所示,视图已经加载。因此,您无法在此时停止加载视图。
从您显示的一小段代码中,看起来您可以在尝试显示它之前在视图控制器上调用isLicenseValid
方法,因为它是尝试显示它的行为会导致它加载其观点。