我需要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];
但是我正在使用导航控制器,因为透明的背景不会来了?????
请帮助我.. !!!!我的屏幕截图如下。
答案 0 :(得分:1)
在view controller
模式下创建一个freeform
,就像下面的图片
在您的第一个视图控制器中添加一个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
完整的项目代码可在以下链接中找到:
答案 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];