【发布时间】:2014-06-30 11:32:38
【问题描述】:
我有一个应用程序可以从框架中呈现视图控制器。在框架的视图控制器中,我在 loadView 中检查有效的许可证。如果许可证无效,则向 UI 返回回调以不加载视图。所以,现在我正在测试我的 SDK 的用户是否尝试不实施许可证检查。即使许可证无效,仍会显示 vie。
我尝试了以下代码,但视图仍然显示:
- (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 的用户是否在没有有效许可的情况下尝试使用它。
【问题讨论】:
-
我认为关闭视图控制器 loadView 是不可能的。为什么不在呈现视图控制器之前检查要求,这样如果不满足要求,就不会呈现新的视图控制器。
-
@insane-36 - 给我一个答案,我会给你功劳。提示:它以“i”开头。
-
你的意思是重写 init 方法,然后在任何这种情况下为 self 返回 nil 吗?
-
@insane-36 - 给我一个答案,我会给你功劳。
-
哈哈,现在真的很有趣。你是什么意思给出答案?我告诉了你我知道的一切,但是如果你能回答自己,那对你有好处。你自己得到一些点,我将能够学到新的东西:)
标签: objective-c sdk frameworks