我正在创建基于图像的应用程序。现在我在viewcontroller.m类中分配并合成了pickerviewcontroller。 作为UIImagePickerController *选择器。在这里,我把它交给(IBAction)。
-(IBAction)selectphoto:(id)sender
{
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:picker animated:YES completion:NULL];
}
然后我设置了它的委托方法。
现在,在我的另一个名为imagedisplay.m的类中,我创建了一个Button,我想用我的imagepickercontroller图像(在我的viewcontroller类中)创建popupviewcontroller, 以下是我的代码,
-(IBAction)gallery:(id)sender
{
NSLog(@"pop over done.");
ViewController *vcntrlr = [[ViewController alloc] init];
UIPopoverController *popover_=[[UIPopoverController alloc] initWithContentViewController:vcntrlr.picker];
[popover_ setDelegate:self];
[popover_ presentPopoverFromRect:CGRectMake(100, 280,100,100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
我期待显示popover controller.BUt当我尝试按下按钮((IBAction)图库)时,我的应用程序终止并且似乎低于错误。
“以NSException类型的未捕获异常终止”。 帮助我。
答案 0 :(得分:0)
我的第一个猜测是你没有对popovercontroller有任何强引用,所以它将被释放到-(IBAction)gallery:(id)sender
方法的范围之外。为确保方法完成后popover控制器保持活动状态,您应该对其进行强有力的引用。
为此,您可以向班级添加属性:
@property (strong, nonatomic) UIPopoverController* popoverController;
将代码更改为:
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:vcntrlr.picker];
[self.popoverController setDelegate:self];
[self.popoverController presentPopoverFromRect:CGRectMake(100, 280,100,100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];