[英]UIPopoverController displayed as modalViewController in iOS 8
我遇到了一個非常令人沮喪的問題。 我不知道這是iOS8的錯誤還是其他原因。
我正在從筆尖加載視圖,如下所示:
這是我的代碼:
UIViewController *popoverViewController = [[UIViewController alloc] init];
[popoverViewController setView:poppverViewFromNib];
_popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverViewController];
[_popverController presentPopoverFromRect:CGRectMake(100, 100, 10, 10) inView:[self view] permittedArrowDirections:UIPopverArrowDirectionAny animated:YES];
iOS模擬器以及真實設備都以模態方式顯示viewController,就像您在此處看到的那樣:
編輯
根據評論中的要求,我告訴您使用UIPopoverController
時的期望:我期望使用UIPopover,而不是modalViewController。
所以在這里,我對所有這些人的疑問如何得到:為什么我的UIPopoverController
不顯示為彈出窗口,而是顯示為modalViewController? 我該如何解決?
閱讀文檔。 Popover演示文稿僅適用於水平常規尺寸的班級。 目前,這僅在iPad上。 iPhone上的Popover演示文稿將始終作為全屏模式演示文稿執行。 看這里 。
您很幸運,iOS8不會崩潰,因為iOS7及更低版本,如果在電話慣用語上使用UIPopoverController
,您的應用程序將崩潰。 UIPopoverController
被棄用iOS8上有利於酥料餅模態演示。 這就是為什么您的應用程序不會崩潰的原因。
您可以為UIPopoverController保留與iOS 7相同的代碼
只需設置ViewController.preferredContentSize = CGSizeMake(300,290); 它會工作。
其他解決方案iOS 8具有一個名為UIPopoverPresentationController的新PopOverController。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navController = [storyboard instantiateViewControllerWithIdentifier:@"Terms_NC"];
navController.preferredContentSize = CGSizeMake(300, 290);
// Present the view controller using the popover style.
navController.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:navController animated: YES completion: nil];
// Get the popover presentation controller and configure it.
UIPopoverPresentationController *presentationController =
[navController popoverPresentationController];
presentationController.permittedArrowDirections =0;
presentationController.sourceView = self.view;
presentationController.sourceRect = CGRectMake(100, 100, 300, 340);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.