我有一个应用程序,它从框架中呈现一个视图控制器。在框架的视图控制器中,我在loadView中检查有效的许可证。如果许可证无效,则会向UI返回回调以不加载视图。所以,现在我正在测试我的SDK用户是否尝试不执行许可证检查。即使许可证无效,仍然会显示许可证。
我尝试了以下代码,但无论如何都会显示视图:
- (void)viewWillAppear:(BOOL)animated
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
if (self.validLicense) {
[self loadCameraPreview];
} else {
[self dismissViewControllerAnimated:YES completion:nil];
}
} else {
IDLog(@"No Camera!");
self.tapRecognizer.enabled = NO;
}
}
有人知道如何杀死视图而不显示它吗?此视图位于SDK中。它不在应用程序中。使用上面的代码,应用程序只会停留在此页面上并且不起作用。我猜这是好的。但我真的想让所呈现的视图卸载。
演示代码如下所示:
if (bundle) {
if (!self.cameraVC) {
self.cameraVC =
[[IDCameraViewController alloc] initWithNibName:@"IDCameraViewController"
bundle:bundle];
[self.cameraVC setOutImageBinarization:NO];
[self.cameraVC setTapRecognizerEnabled:YES];
[self.cameraVC setReturnType:BOTH];
}
UIView *cameraView = self.cameraVC.view;
//if (self.validLicense) {
[self.cameraVC setCaptureMode:self.mode];
[self.cameraVC willMoveToParentViewController:self];
[self addChildViewController:self.cameraVC];
[self.view addSubview:cameraView];
[self.cameraVC didMoveToParentViewController:self];
//}
// if (self.validLicense == NO) {
// 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];
// }
}
请记住,我正在评论检查以测试我的SDK的用户是否尝试使用它而没有有效的许可证。
答案 0 :(得分:1)
我认为在调用loadView方法时无法关闭任何视图控制器,您必须等到调用viewDidLoad然后将其解除或从parentViewController中删除它。但是,好的方法是事先决定是否提供这样的视图控制器。因此,如果您在呈现视图之前检查此人是否具有有效许可证,那就更好了。但是,如果你发现了什么,那我肯定会喜欢听到它。