【问题标题】:my popovercontroller terminating我的 popovercontroller 终止
【发布时间】:2013-11-18 13:10:13
【问题描述】:

我正在创建基于图像的应用程序。现在我已经在我的 viewcontroller.m 类中分配并合成了pickerviewcontroller。 作为 UIImagePickerController *picker。在这里,我已将其交给 (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 的类中,我创建了一个按钮,我想用我的 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];

}

当我尝试按下 Button((IBAction)gallery) 时,我期待显示 popover controller.BUt 我的应用程序已终止并且似乎出现以下错误。

“以 NSException 类型的未捕获异常终止”。 帮帮我。

【问题讨论】:

  • 能否请您发布异常中的确切文本?
  • 我是在我的队列底部做的。这就是我在控制台中得到的。
  • 需要添加异常断点。这将在崩溃的确切行停止,以便您查看发生了什么问题。
  • 我被困在我应该给“ContentViewController:”什么上。我也试过给它“UIImagePickerControllerSourceTypePhotoLibrary”。但是遇到了同样的崩溃和同样的错误。
  • 您的日志NSLog(@"pop over done."); 是否显示在您的控制台中?如果没有,问题就出在其他地方。您还写道,您创建了一个名为viewcontroller.m 的文件。 interfacesimplementations 是不用大写字母写的吗?

标签: ios objective-c uibutton uipopovercontroller


【解决方案1】:

我的第一个猜测是您没有对 popovercontroller 进行任何强引用,因此它将在 -(IBAction)gallery:(id)sender 方法的范围之外发布。为确保弹出框控制器在方法完成后保持活动状态,您应该保持对它的强引用。

为此,您可以向您的类添加一个属性:

@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];

【讨论】:

  • 太糟糕了.. 但是您为什么不分享其他人已经提到的异常详细信息?你显然得到了一个 NSException。异常详细信息将至少提供有关导致您的问题的原因的提示。
  • 在下面提到:“'NSInvalidArgumentException',原因:'-[UIPopoverController initWithContentViewController:] 未在 UIUserInterfaceIdiomPad 下运行时调用。' ”。是我们在 iphone 上做的吗?
  • 当我尝试通过 ipad 运行它时,我的应用程序也以 '-[UIPopoverController initWithContentViewController:] 终止,不得使用 nil 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
相关资源
最近更新 更多