我的popovercontroller终止

时间:2013-11-18 13:10:14

标签: ios objective-c uibutton uipopovercontroller

我正在创建基于图像的应用程序。现在我在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类型的未捕获异常终止”。 帮助我。

1 个答案:

答案 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];