使用 XCode 5 的 iPhone 弹出窗口视图
Posted
技术标签:
【中文标题】使用 XCode 5 的 iPhone 弹出窗口视图【英文标题】:Popover view for iPhone using XCode 5 【发布时间】:2013-10-08 03:20:32 【问题描述】:我想重用this video 中描述的 iPhone 弹出框,这正是我所需要的。
问题是我无法像视频中那样将UIViewController
属性绑定到弹出框的UIViewController
。
视频的一个不同之处在于它是使用 XCode 4.2 制作的,而我使用的是 XCode 5。
所以问题是:如何在 XCode 5 上的video 中为 iPhone 制作弹出框?
Here is the XCode 5 project I am struggling with.
【问题讨论】:
我在 iPhone 4s ios8.1 模拟器上测试了这个弹出框功能,我得到一个黑屏阻止应用程序:(显然下面的代码在 iOs8 上不再工作了...... 【参考方案1】:我想出了一种方法让 popover 以编程方式在 iPhone 和 iPad 上工作!
创建一个类别以在 iPhone 上提供弹出框(更多详细信息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)
只需在您的项目中通过右键单击 -> 新建文件 -> 目标 c 类 -> UIViewController 并勾选“使用 XIB”框来创建它。
然后点击按钮时会出现一个弹出框。
在 iOs5 及更高版本上测试正常。
【讨论】:
如何将任何对象添加到此弹出视图 弹出框的内容,在我的例子中,是DetailsViewController。因此,要将任何内容添加到弹出视图中,请将其添加到您的 DetailsViewController。 是的,我知道了,我用过这个,[myViewController.view addSubviews:objects]; 在***.com/questions/18205903/… 中已被Apple 接受。至于我自己,我还没有将我的应用提交到 App Store。 我在 iPhone 4s iOs8.1 模拟器上测试了这个 popover 功能,我得到一个黑屏阻止应用程序:( 显然这个代码不适用于 iOs8 并且可能以上所有版本都不起作用......以上是关于使用 XCode 5 的 iPhone 弹出窗口视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xcode 中重新启用 CoreLocation 提示?
如何在 iPhone (iOS 5) 上的音乐应用程序中为 UITableViewCell 创建一个弹出窗口