我有一个 .h 和 .m 链接的 xib 文件。在 xib 中有一个带有 textView 的 UIView。当您单击按钮时,我想对该 View 执行的操作是作为 UIPopViewController 将其打开。
这是我的代码:
- (IBAction)thisButtonid)sender
{
popViewController *popVC = [[popViewController alloc] initWithNibName"popViewController" bundle:nil];
self.pop = [[UIPopoverController alloc] initWithContentViewController:popVC];
[self.pop setPopoverContentSize:CGSizeMake(220, 120) animated:YES];
[self.pop presentPopoverFromRect:[(UIButton *)sender frame] inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
它因以下错误而崩溃。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIPopoverController initWithContentViewController:] called when not running under UIUserInterfaceIdiomPad.'
我不明白这个错误。
Best Answer-推荐答案 strong>
UIPopoverController 仅适用于 iPad。在 iOS 8 中,您可以使用 UIPopoverPresentationController 适用于 iPhone 和 iPad,还有一个小技巧可以让它看起来像 UIPopoverController 解释 HERE .
这是您在我提供的链接中看到的 swift 代码的 Objective-C 版本。
@interface SomeViewController : UIViewController <UIPopoverPresentationControllerDelegate>
@end
@implementation SomeViewController
-(void) prepareForSegueUIStoryboardSegue *) segue senderid) sender
{
if ([segue.identifier isEqualToString"opoverSegue"]) {
UIViewController *controller = segue.destinationViewController;
controller.popoverPresentationController.delegate = self;
controller.preferredContentSize = CGSizeMake(320, 186);
}
}
// MARK: UIPopoverPresentationControllerDelegate
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationControllerUIPresentationController *)controller
{
// Return no adaptive presentation style, use default presentation behaviour
return UIModalPresentationNone;
}
@end
关于ios - UIPopViewController 不工作,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/28143309/
|