2016-03-28 22 views
2

iPad üzerinde UIPopoverPresentationController iyi çalışıyor ama iPhone üzerinde her zaman tam pencere modal pop-up gösteriyor. i aşağıdaki kodu kullanıyorum:UIPopoverPresentationController tam ekran modal iPhone üzerinde gösteriliyor

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
MySecondViewController *contentVC = [storyboard instantiateViewControllerWithIdentifier:@"Pop"]; 
contentVC.modalPresentationStyle = UINavigationControllerOperationPop; // 13 
UIPopoverPresentationController *popPC = contentVC.popoverPresentationController; // 14 
contentVC.popoverPresentationController.sourceRect =CGRectMake(100, 130, 280, 230); 
self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100); 
//self.showPop.frame; // 15 
contentVC.popoverPresentationController.sourceView = 
self.showPop; // 16 
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny; // 17 
popPC.delegate = self; //18 
[self presentViewController:contentVC animated:YES completion:nil]; 

-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller { 
    return UIModalPresentationNone; 
} 
+0

http://stackoverflow.com/questions/28521583/uipopoverpresentationcontroller-on-iphone-doesnt-produce-popover – gabbler

cevap

4

ViewController.h'de Öncelikle UIPopoverPresenatationController'ın bir özelliğini yapın. Sonra

@property(nonatomic,retain)UIPopoverPresentationController *dateTimePopover8; 

biz tıkladığınızda also.It otomatik gizler biz yeni bir şekilde bu gizlemek zorunda Sen yerine popOver.So sunma View Controller sunuyoruz fark etmiş olmalı PopOverPresentationcontroller

UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:dateVC];/*Here dateVC is controller you want to show in popover*/ 
      dateVC.preferredContentSize = CGSizeMake(280,200); 
      destNav.modalPresentationStyle = UIModalPresentationPopover; 
      _dateTimePopover8 = destNav.popoverPresentationController; 
      _dateTimePopover8.delegate = self; 
      _dateTimePopover8.sourceView = self.view; 
      _dateTimePopover8.sourceRect = [sender frame]; 
      destNav.modalPresentationStyle = UIModalPresentationPopover; 
      destNav.navigationBarHidden = YES; 
      [self presentViewController:destNav animated:YES completion:nil]; 

göstermek ekranda.

-(void)hideIOS8PopOver 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Biz uygulama dosyasında temsilci yönteminin altında uygulama file.Write içinde UIPopoverPresenatationController delegesi uygulamak zorunda.

- (UIModalPresentationStyle) adaptivePresentationStyleForPresentationController: (UIPresentationController *) controller { 
    return UIModalPresentationNone; 
} 
+0

Çalışıyor. Çok teşekkür ederim –

+0

Hoş Geldiniz :) –

2

Popover kontrolörleri iPad cihazlarıyla münhasıran kullanım içindir.

Düzenleme: iOS 8 yana Soberman tarafından belirtildiği gibi kamu API'leri kullanarak iPhone'da popovers sunmak mümkündür, bu nedenle bu cevap artık muhtemelen alakalı değildir.

UIPopoverController Apple'ın belgelerinde belirtildiği üzere

:

Popover kontrolörleri iPad cihazlarıyla münhasıran kullanım içindir. Maalesef bu uygulamayı iPhone uygulamasında maalesef kullanmanın bir yolu yok. Ancak, iPhone desteği ve daha fazlasını ekleyen UIPopoverController tarafından sağlanan işlevselliğin bir çift özel üçüncü taraf uygulaması vardır. Örneğin, https://github.com/50pixels/FPPopover.

Düzenleme: Ayrıca, iPhone/iPad için kontrol edilmeye değer başka bir özelleştirilebilir popover uygulaması da var: https://github.com/nicolaschengdev/WYPopoverController.

+0

cevap için teşekkür ederiz. –

+0

Memnun olup olmadığını kabul et ve kabul et. –

+0

Elbette. Teşekkürler. Başkalarına da yardımcı olduğunu düşünüyorsanız lütfen soruya oy verin. Teşekkürler. –