适用于iPhone,iOS 7的UIPopoverview

时间:2014-09-06 05:53:59

标签: ios storyboard uipopovercontroller

enter image description here

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

Init:在故事板中创建两个UIViewController。

让我们说正常的FirstViewController和我们制作Popup的SecondViewController。 模型Segue:将UIButton置于FirstViewController中,并在此UIButton上创建一个segue作为模型segue。

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

制作背景暗淡:在SecondViewController中添加一个UIImageView,它覆盖了孔屏幕,并将其图像设置为一些暗淡的半透明图像。您可以从此处获取示例:UIAlertView背景图像

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

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

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

[self setModalPresentationStyle:UIModalPresentationCurrentContext];

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

[self dismissViewControllerAnimated:YES completion:Nil];

但是我正在使用导航控制器,因为透明的背景不会来了?????

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

2 个答案:

答案 0 :(得分:1)

view controller模式下创建一个freeform,就像下面的图片

一样

enter image description here

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

enter image description here

在你的第一个视图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

答案 1 :(得分:0)

我有同样的问题,并没有找到解决方案如何解决它与故事板上的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];