我的 popovercontroller 终止

Posted

技术标签:

【中文标题】我的 popovercontroller 终止【英文标题】:my popovercontroller terminating 【发布时间】: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 是不用大写字母写的吗? 【参考方案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 调用。

以上是关于我的 popovercontroller 终止的主要内容,如果未能解决你的问题,请参考以下文章

在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调

带有 Popovercontroller 的 BarButtonItem?

PopoverController Ionic 4?

当 iPad 旋转时,ActionSheet 的 PopoverController 不会停留在窗口的中心

Swift iOS - 如何将 UIPopoverBackgroundView 类中的方法连接到不同类中的 PopoverController?

IOS UI popoverController 在设备方向更改后不会通过点击外部来关闭