1

每个人都说UIPopoverController在 iOS 8 上工作。

但是,如果我在 iPhone 模拟器中测试我的应用程序,它会崩溃并显示:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIPopoverController initWithContentViewController:] 未在 UIUserInterfaceIdiomPad 下运行时调用。”

此代码在 iPad 模拟器上运行良好。

我的Development Target设置为 8.4

UIViewController* viewController = [[UIViewController alloc] initWithNibName:@"StyleMenu" bundle:nil];
    self.stylePopover = [[UIPopoverController alloc] initWithContentViewController:viewController];
    self.stylePopover.popoverContentSize = CGSizeMake(250,200);
    [self.stylePopover presentPopoverFromBarButtonItem:styleBarButton
                               permittedArrowDirections:UIPopoverArrowDirectionUp
                                               animated:YES];

任何帮助,将不胜感激。

4

3 回答 3

2

是的,可以从 iOS8 开始。我已经回答了类似的问题,甚至实现了一个有用的类来处理 iPhone 上的弹出框,甚至在其中放置了一些自定义元素,例如UITableView, WKWebView,你可以命名它。
你可以在这里查看我的答案和课程链接: https ://stackoverflow.com/a/30418212/2924920

于 2015-09-26T10:13:48.763 回答
2

UIPopoverController在 iPhone 上不可用。改用 viewController 的新popoverPresentationController属性

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIPopoverPresentationController_class/index.html

MYViewController * myViewController = [[MYViewController alloc] init];
myViewController.modalPresentationStyle = UIModalPresentationPopover;
myViewController.popoverPresentationController.sourceView = button;
myViewController.popoverPresentationController.sourceRect = button.bounds;
[self presentViewController: myViewController animated: YES completion: nil];
于 2015-09-26T09:02:08.707 回答
0

不幸的是,根据 Apple 文档,UIPopoverController 是 iPad 独有的

Popover 控制器专用于 iPad 设备。尝试在其他设备上创建一个会导致异常。

这个问题也可能重复? iphone 的 UIPopoverController 不工作?

于 2015-09-26T09:02:32.660 回答