使用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确定。