Objective c Can';你不能让UIImagePickerController工作吗?
除了NSLog之外,什么都不会发生,即使我的视图控制器是UINavigationController和UIImagePickerDelegate的子类。是否有人对UIImagePickerController有任何见解或经验 我应该注意到,我主要使用iPhone进行测试 解决方案:创建一个新类,该类仅包含UINavigationBarDelegate和UIImagePickerDelegate的子类。在该类的ViewDidEmerge中,将代码以模态方式呈现imagePicker。在方法内创建该类的实例(在另一个类内,导入.h文件和所有文件),并以方式呈现该类。 ^我收回。模态动画才是真正的问题。尝试为此使用另一个类实例会打乱UIImagePicker的方法实现。编辑: 如果使用故事板,您应该在代理中定义Objective c Can';你不能让UIImagePickerController工作吗?,objective-c,ios5,uiimagepickercontroller,Objective C,Ios5,Uiimagepickercontroller,除了NSLog之外,什么都不会发生,即使我的视图控制器是UINavigationController和UIImagePickerDelegate的子类。是否有人对UIImagePickerController有任何见解或经验 我应该注意到,我主要使用iPhone进行测试 解决方案:创建一个新类,该类仅包含UINavigationBarDelegate和UIImagePickerDelegate的子类。在该类的ViewDidEmerge中,将代码以模态方式呈现imagePicker。在方法内创建该
prepareFroSegue
:
-(void) openPhotoLib:(id)sender {
[self dismissModalViewControllerAnimated:YES];
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[imagePicker setDelegate:self];
[self presentModalViewController:imagePicker animated:YES];
NSLog(@"openPhotoLib called");
}
()
我不确定,但我认为电话:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"AddPlayer"])
{
PlayerDetailsViewController
*playerDetailsViewController =
(PlayerDetailsViewController *) segue.destinationViewController;
playerDetailsViewController.delegate = self;
}
}
可能会干扰以下通话
[self dismissModalViewControllerAnimated:YES];
因为两者都是在同一个运行循环中完成的
我建议这样做:
[self presentModalViewController:imagePicker animated:YES];
- (void)presentPicker:(...)picker {
[self presentModalViewController:imagePicker animated:YES];
}
performSelector
方法,我们只是在运行循环中将对presentPicker的调用排队(实际上没有任何延迟,因为我们指定0.0作为延迟值)。通过这种方式,我们给UIKit一个机会,在尝试呈现下一个模态视图之前,可以忽略模态视图并进行所有必要的清理
将presentPicker
定义为方法的原因是performSelector
只允许指定一个参数(而不是presentModal…
所需的两个参数)
希望这能有所帮助。问题是因为
依次调用了dismissModalViewControllerAnimated
和presentModalViewController
“取消”操作需要一些时间,因为它必须设置要取消的视图的动画。在动画期间,它仍然是顶部模态视图。因此,在此期间不能显示其他模型视图。如果您尝试,那么调用将失败,并且不会执行任何操作
要修复此问题,请使用[self dismissModalViewControllerAnimated:NO]代码>即没有动画
如果仍然需要动画,请遵循以下解决方案之一:
创建后不是imagePicker
nil?Sergio,这是一个很棒的主意!然而,不幸的是,它没有起作用(我担心使用模块化segue与ImagePicker不兼容?
[self performSelector:@selector(presentPicker:) withObject:picker afterDelay:0.0];