我需要帮助来解决警告错误。我使用UIImagePickerController
,当我点击tabBar上的第三个标签时,它会显示。当我取消时,我想在选择相机之前显示最后一个标签,但是当我解雇我的选择器时,我收到警告!!
这是我的代码,我不明白为什么会收到警告...
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self showPickerController];
}
- (void) showPickerController
{
imagePicker = [[UIImagePickerController alloc] init];
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
} else{
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Erreur !"
message:@"Votre iPhone n'a pas de Camera"
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[message show];
}
[self presentViewController:imagePicker animated:NO completion:nil];
}
#pragma mark - Camera Methods
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self.tabBarController dismissViewControllerAnimated:NO completion:^{
if(self.tabBarController!=nil)
[self.tabBarController setSelectedIndex:0];
}];
}
有什么想法吗?
答案 0 :(得分:1)
简单的想法:将其更改为:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self showPickerController];
}
可能更好的想法是在开始转换到此vc之前检测源类型可用条件,而是改为呈现选择器vc。
答案 1 :(得分:1)
除了danh的回答之外,在视图控制器中添加BOOL
属性,并向viewDidAppear:
方法添加一些代码:
@property (nonatomic) BOOL appeared;
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (!self.appeared || [self isMovingToParentViewController] || [self isBeingPresented]) {
self.appeared = YES;
[self showPickerController];
}
}
这将使UIImagePickerController
在被解雇后不再立即出现。
此外,这与问题并不相关,但您可能希望稍微更改showPickerController
方法以防止显示空UIImagePickerController
如果没有相机可用:
- (void)showPickerController
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:NO completion:nil];
}
else {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Erreur !"
message:@"Votre iPhone n'a pas de Camera"
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[message show];
}
}