Objective c iPhone后退按钮在使用UIImageViewController选择图像后拒绝工作?

Objective c iPhone后退按钮在使用UIImageViewController选择图像后拒绝工作?,objective-c,ipad,cocoa-touch,uiimagepickercontroller,Objective C,Ipad,Cocoa Touch,Uiimagepickercontroller,所以我正在写这个iPad应用程序,它从主屏幕开始,然后你可以进入设置页面。在“设置”页面中,您可以在popover视图中使用UIImagePickerController从相册中选择图片 如果我转到“设置”页面,然后按“上一步”按钮返回到主页面,则一切正常。但是,如果我转到“设置”并选择图像,页面上的“上一步”按钮将不允许我返回主页 popover和UIImagePickerController似乎工作正常,所以我不知道是什么原因导致了这种情况。这是我的UIImagePickerControll

所以我正在写这个iPad应用程序,它从主屏幕开始,然后你可以进入设置页面。在“设置”页面中,您可以在popover视图中使用
UIImagePickerController
从相册中选择图片

如果我转到“设置”页面,然后按“上一步”按钮返回到主页面,则一切正常。但是,如果我转到“设置”并选择图像,页面上的“上一步”按钮将不允许我返回主页

popover和
UIImagePickerController
似乎工作正常,所以我不知道是什么原因导致了这种情况。这是我的
UIImagePickerController
代码

- (IBAction)imagePick1:(id)sender {
    pickerController = [[UIImagePickerController alloc] init];
    [pickerController setDelegate:self];
    [pickerController setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
    [pickerController setAllowsEditing:NO];

    popoverController = [[UIPopoverController alloc] initWithContentViewController:pickerController];
    [popoverController setDelegate:self];
    [popoverController presentPopoverFromRect:[[self imageButton1] frame] inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

当我尝试按下后退按钮时,应用程序冻结,不再响应任何命令。我做错了什么

编辑:我再次运行了它,这是我按下后退按钮时在日志中得到的错误

-[__NSCFType dismissPopoverAnimated:]: unrecognized selector sent to instance 0x7128cd0
这里也是我的头文件的开头

@interface ViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIPopoverControllerDelegate>{
    UIPopoverController *popoverController;
}
@property (nonatomic, retain) UIPopoverController *popoverController; 
@界面ViewController:UIViewController
{
UIPopoverController*popoverController;
}
@属性(非原子,保留)UIPOPCovercontroller*POPCovercontroller;
可能重复。看

您是否像下面那样在头文件中声明了委托?此外,请确保您的委托也符合UINavigationControllerDelegate,并且UIImagePickerControllerDelegate直接继承自UINavigationControllerDelegate,但是所有UINavigationControllerDelegate方法都是可选的

@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
编辑3:为什么要将DismissPopOveranimate设置为NO,并在popoverController仍在显示时释放它

[popoverController dismissPopoverAnimated:NO];
[popoverController release];
尝试将dismissPopoverAnimated设置为“是”,并暂时删除该版本。顺便问一下,popoverController是否作为属性保留在头文件中?你在用ARC吗?如果您使用的是ARC,则不应在popoverController上调用release

编辑4:

尝试将标题修改为:

UIPopoverController *_popoverController;

@property (nonatomic, retain) UIPopoverController *popoverController
并添加
@synthesis-popcovercontroller=\u-popcovercontroller到您的实现文件

现在开始在实现文件中将“popoverController”的所有实例替换为“\u popoverController”

同时更换
[popoverController解除PopOveranimated:是]带有

if(_popoverController != nil)
    [_popoverController dismissPopoverAnimated:YES];

让我知道下面的结果。

如果这是重复的,请相应地标记它,而不是回答。此外,请不要在评论中进行长时间的讨论。
UIPopoverController *_popoverController;

@property (nonatomic, retain) UIPopoverController *popoverController
if(_popoverController != nil)
    [_popoverController dismissPopoverAnimated:YES];