使用XCode 5的iPhone的Popover视图

前端之家收集整理的这篇文章主要介绍了使用XCode 5的iPhone的Popover视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想重用 this video中描述的iPhone的popover,这正是我需要的.
问题是我无法像视频中那样将UIViewController属性绑定到popover的UIViewController.

与视频的一个不同之处在于它是使用XCode 4.2制作的,而我使用的是XCode 5.

所以问题是:如何在XCode 5的video上制作iPhone的弹出窗口?

Here is the XCode 5 project I am struggling with.

解决方法

我找到了一种让popover以编程方式在iPhone和iPad上工作的方法

>创建一个类别以在iPhone上提供popover(更多细节here)

//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必须保存在一个实例变量中,更多细节here.

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];
}

>创建UIViewController,它将包含弹出窗口内显示内容(在示例中称为DetailsViewController)

只需右键单击即可在项目中创建它 – >新文件 – > Objective c class – > UIViewController并勾选“With XIB”框.

然后点击按钮旁边会出现一个弹出窗口.

在iOs5及以上版本上测试OK.

猜你在找的iOS相关文章