使用XCode 5的iPhone的Popover视图

我想重新使用这个video中描述的iPhone的popup窗口,这正是我所需要的。

问题是,我不能像在video中一样将UIViewController属性绑定到popup窗口的UIViewController

与video的一个不同之处在于它是使用XCode 4.2制作的,我使用的是XCode 5。

所以问题是:如何在XCode 5的video中制作iPhone的popover?

这是我正在努力的XCode 5项目。

我想出了一个方法让popover以编程方式在iPhone和iPad上工作!

  • 创build一个类别,使iPhone上的popup窗口可用(更多细节在这里 )

     //UIPopover+Iphone.h @interface UIPopoverController (overrides) + (BOOL)_popoversDisabled; @end //UIPopover+Iphone.m @implementation UIPopoverController (overrides) + (BOOL)_popoversDisabled { return NO; } @end 
  • 创build将显示popup窗口并实现它所调用的方法的button

ExampleUIViewController.h

 @interface ExampleViewController : UIViewController <UIPopoverControllerDelegate> @property (strong, nonatomic) UIButton *detailButton; @property (nonatomic, retain) IBOutlet UIPopoverController *poc; 

UIPopoverController poc必须保存在一个实例variables中, 这里有更多细节。

ExampleUIViewController.m

 - (void)viewDidLoad { _detailButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_detailButton addTarget:self action:@selector(showPop:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_detailButton]; } -(void)showPop:(UIButton *)button { UIViewController *detailsViewController = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil]; self.poc = [[UIPopoverController alloc] initWithContentViewController:detailsViewController]; [self.poc setDelegate:self]; [self.poc presentPopoverFromRect:_detailButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES]; } 
  • 创buildUIViewController,它将包含popover内显示的内容(在本例中称为DetailsViewController)

通过右键单击 – >新build文件 – >目标c类 – > UIViewController,在项目中简单地创build它,并勾选“使用XIB”框。

然后一个popup窗口会出现在button旁边点击。

在iOs5及以上testing确定。