我想重用这个视频中描述的 iPhone 弹出框,这正是我所需要的。
问题是我无法将UIViewController
属性绑定到视频中的弹出框UIViewController
。
视频的一个不同之处在于它是使用 XCode 4.2 制作的,而我使用的是 XCode 5。
所以问题是:如何像XCode 5 上的视频一样为 iPhone 制作弹出框?
我想重用这个视频中描述的 iPhone 弹出框,这正是我所需要的。
问题是我无法将UIViewController
属性绑定到视频中的弹出框UIViewController
。
视频的一个不同之处在于它是使用 XCode 4.2 制作的,而我使用的是 XCode 5。
所以问题是:如何像XCode 5 上的视频一样为 iPhone 制作弹出框?
我想出了一种方法让 popover 以编程方式在 iPhone 和 iPad 上工作!
创建一个类别以在 iPhone 上使用 popover(更多详细信息请点击此处)
//UIPopover+Iphone.h
@interface UIPopoverController (overrides)
+ (BOOL)_popoversDisabled;
@end
//UIPopover+Iphone.m
@implementation UIPopoverController (overrides)
+ (BOOL)_popoversDisabled { return NO;
}
@end
创建将显示弹出框并实现它调用的方法的按钮
ExampleUIViewController.h
@interface ExampleViewController : UIViewController <UIPopoverControllerDelegate>
@property (strong, nonatomic) UIButton *detailButton;
@property (nonatomic, retain) IBOutlet UIPopoverController *poc;
UIPopoverController poc 必须保存在一个实例变量中,更多细节在这里。
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];
}
只需通过右键单击 -> 新建文件 -> 目标 c 类 -> UIViewController 在您的项目中创建它,然后勾选“使用 XIB”框。
然后,点击时按钮旁边会出现一个弹出框。
在 iOs5 及更高版本上测试正常。