popoverviewController在iPhone上崩溃,适用于iPad

时间:2011-12-05 20:09:03

标签: objective-c ios uipopovercontroller

这里的一个菜鸟问题:

任何想法为什么这个代码:

UIViewController* popoverviewController = [[UIViewController alloc]init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

[webViewnetwork loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"webView" ofType:@"html"]isDirectory:NO]]];
[popoverView addSubview:webViewnetwork];

popoverviewController.view = popoverView;
popoverviewController.contentSizeForViewInPopover = CGSizeMake (100, 100);

self.popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverviewController];
[self.popoverController presentPopoverFromRect:CGRectMake(0, 0, 1, 1) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

在iPad上运行良好,但在iPhone上崩溃了吗? 我正在尝试做与我的iPad版本相同的事情,即添加带有html格式文本的子视图。它在第7行崩溃(程序接收信号:SIGABRT)(initWithContentViewController)

谢谢你!

2 个答案:

答案 0 :(得分:6)

因为UIPopoverController仅适用于iPad。

答案 1 :(得分:1)

你不能在iPhone上使用UIPopoverController。 U需要检测您正在使用哪个设备习惯用法,并在运行时显示相应的viewController类型。

项目here提供了一些示例。它的基本要点如下:

 if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
     /* use iPhone related viewController via either presentModal or via UIViewController containment */
 }else{
     /* Using an iPad use a popoverController */
 }

祝你好运。