UIPopoverview for iPhone,iOS 7

Posted

技术标签:

【中文标题】UIPopoverview for iPhone,iOS 7【英文标题】: 【发布时间】:2014-09-06 05:53:59 【问题描述】:

我需要弹出视图。我遵循了这个指示。

初始化:在storyboard中创建两个UIViewController。

让我们说 FirstViewController 是正常的,而 SecondViewController 是我们制作的 Popup。 Model Segue:将 UIButton 放入 FirstViewController 并在此 UIButton 上创建一个 segue 到 SecondViewController 作为模型 segue。

Make Transparent:现在选择SecondViewController的UIView(默认使用UIViewController创建的UIView)并将其背景颜色更改为清除颜色。

使背景变暗:在 SecondViewController 中添加一个 UIImageView 覆盖孔屏幕并将其图像设置为一些变暗的半透明图像。您可以从这里获取示例:UIAlertView 背景图片

显示设计:现在添加一个 UIView 和你想要显示的设计类型。这里我展示了我的故事板的屏幕截图。

这里我在登录按钮上添加了 segue,它打开 SecondViewController 作为弹出窗口询问用户名和密码

重要提示:现在是主要步骤。我们希望 SecondViewController 不完全隐藏 FirstViewController。我们已经设置了清晰的颜色,但这还不够。默认情况下它会在模型​​演示后添加黑色所以我们必须在 FirstViewController 的 viewDidLoad 中添加一行代码。您也可以在其他地方添加它,但它应该在 segue 之前运行。

[self setModalPresentationStyle:UIModalPresentationCurrentContext];

解雇:何时解雇取决于您。这是一个模型演示,所以为了解雇我们做我们为模型演示所做的事情:

[selfdismissViewControllerAnimated:YES 完成:Nil];

但是我正在使用导航控制器,因为那个透明背景没有出现?????

请帮帮我..!!!!我的屏幕截图如下。

【问题讨论】:

你为图像视图应用了正确的图像 s。我已经将你的编码发送到你的邮箱?? 你可以使用弹出视图 很好的 karthik,,,,现在我检查了。它的工作。 【参考方案1】:

freeform 模式下创建一个view controller,如下图所示

在您的第一个视图控制器中添加一个 UIButton,如下图所示

在您的第一个视图 controller.h 中添加以下行

#import "UIPopoverController+iPhone.h"


@interface first view controller : UIViewController<UIPopoverControllerDelegate>


@property (nonatomic,strong) UIPopoverController *popOver;

@property (strong, nonatomic) IBOutlet UIButton *popbtn;

在您的第一个视图 controller.m 中,将以下行添加到按钮操作方法中

 - (IBAction)popButton:(UIButton *)sender


UILabel *showlblView=[[UILabel alloc]init];
showlblView.frame=CGRectMake(10, 10, 250, 40);

showlblView.text=@"Gopi";
showlblView.textColor=[UIColor whiteColor];
showlblView.textAlignment=NSTextAlignmentCenter;

final *vc=[[final alloc] init];



[vc.view addSubview:showlblView];

self.popOver=[[UIPopoverController alloc]initWithContentViewController:vc];

[self.popOver setPopoverContentSize:CGSizeMake(300, 200)];

CGRect popoverframe=CGRectMake(self.popbtn.frame.origin.x, self.popbtn.frame.origin.y, self.popbtn.frame.size.width, self.popbtn.frame.size.height);
[self.popOver presentPopoverFromRect:popoverframe inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];




这里是你的NSObjet 类文件UIPopoverController+iPhone.h

.h 文件

#import <UIKit/UIKit.h>

@interface UIPopoverController (iPhone)
+ (BOOL)_popoversDisabled;
@end

.m 文件

#import "UIPopoverController+iPhone.h"

@implementation UIPopoverController (iPhone)
+ (BOOL)_popoversDisabled 
return NO;

@end

完整的项目代码可在以下链接中找到:

https://www.sendspace.com/file/ktie4t

【讨论】:

【参考方案2】:

我遇到了同样的问题,但没有找到解决方案如何使用故事板上的 segue 来解决它,但是当我在第一个控制器上展示第二个控制器(使用 navigationViewController 推送)时,它以编程方式工作正常。如果它对您不重要,请尝试以下操作:

+ (void)showWithParent:(UIViewController *)parentController 
    static SomeViewController *singleton = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        singleton = [storyboard instantiateViewControllerWithIdentifier:@"SomeViewControllerID"];
    );
    [parentController presentViewController:singleton animated:YES completion:nil];

或者只是:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
SecondViewController *secondController = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewControllerID"];
[firstController presentViewController:secondController animated:YES completion:nil];

【讨论】:

以上是关于UIPopoverview for iPhone,iOS 7的主要内容,如果未能解决你的问题,请参考以下文章

显示键盘 + iPad 时 UIPopoverView 变得扭曲

您将如何创建 UIPopoverView 的静态版本?

将导航控制器用于 uipopoverview 的最佳方式

如何将 UIPopoverView 显示为地图视图的注释? (iPad)

textview上的popoverview单击tableview单元格

CSS @media for iphone