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