Objective-C在presentViewController的viewDidLoad中停止加载视图

时间:2014-02-17 19:00:06

标签: objective-c presentmodalviewcontroller

我使用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];

有什么想法吗?请。

谢谢你, 露

1 个答案:

答案 0 :(得分:1)

当调用viewDidLoad时,正如方法名所示,视图已经加载。因此,您无法在此时停止加载视图。

从您显示的一小段代码中,看起来您可以在尝试显示它之前在视图控制器上调用isLicenseValid方法,因为它是尝试显示它的行为会导致它加载其观点。