Objective-C:Ipad弹出框
来源:互联网 发布:淘宝促销活动代码 编辑:程序博客网 时间:2024/05/21 18:44
Project : Hour11-20140922-01
一、手工显示弹出框:
1、定义一个popover segue和一个action
2、action内调用方法performSegueWithIdentifier
-(IBAction)showPPVbyCoding:(id)sender { [selfperformSegueWithIdentifier:@"showPOPOVER" sender:self]; }
二、以编程方式创建并显示popover
- (IBAction)createPopobyCoding:(id)sender { UIStoryboard *mainSB=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle] ]; EditorViewController *editorVC=[mainSB instantiateViewControllerWithIdentifier:@"PopoVerScene"]; self.editorPOPOVERController=[[UIPopoverController alloc]initWithContentViewController:editorVC]; self.editorPOPOVERController.popoverContentSize=CGSizeMake(300, 300); self.editorPOPOVERController.delegate=self; [self.editorPOPOVERController presentPopoverFromRect:((UIButton *)sender).frame inView:self .view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];}
二、关闭弹出框的响应
方式1、popoverControllerDidDismissPopover
按照说明只要遵守了协议UIPopoverControllerDelegate,并在方法内将popoverController.delegate设置为self,即ViewControler后,当弹出框关闭时,将调用ViewController.m中的方法popoverControllerDidDismissPopover
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualToString:@"showPOPOVER"]) { ((UIStoryboardPopoverSegue*)segue).popoverController.delegate=self; }}
但在XCODE6中,如果是GUI创建的segue,无论是点击弹出框外关闭还是使用dismiss方法关闭,popoverControllerDidDismissPopover方法都没有调用(后续研究),只有手工创建popover并显示,才会调用popoverControllerDidDismissPopover。
而从体验上讲,用popoverControllerShouldDismissPopover方法更好,这个会在popover消失前就处理动作,而popoverControllerDidDismissPopover会在popover消失后才处理,会有延时。
代码如下:
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{ NSLog(@"call popoverControllerDidDismissPopover"); NSString*emailstr; emailstr=((EditorViewController*)popoverController.contentViewController).textfield_popover.text; self.emaillabel2.text=emailstr;}
或者:
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController{ NSLog(@"call popoverControllerShouldDismissPopover"); NSString*emailstr; emailstr=((EditorViewController*)popoverController.contentViewController).textfield_popover.text; self.emaillabel2.text=emailstr; returnYES;}
方式2、不需要使用协议,只要使用prepareForSegue的segue.destinationViewController以及presentingViewController
在场景A:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
((EditorViewController*)segue.destinationViewController).email=self.emaillabel.text;
}
在场景B:
-(void)viewWillDisappear:(BOOL)animated{
((ViewController*)self.presentingViewController).emaillabel.text=self.emailtextfield.text;
}
三、其他
1、设置弹出框的大小:是设置ViewController的大小,不是view的,view的没得设置,跟VC的一样大
另外,如果勾选了Preferred Explicit Size,
则自定义大小是不生效的:
self.editorPOPOVERController.popoverContentSize=CGSizeMake(300,300);
最后推荐干货,自然音乐大师Dan Gibson,边coding边听大自然的声音,倍儿轻松!
- Objective-C:Ipad弹出框
- iOS的绘图机制-iOS,iPad,iPhone,Objective-c
- iOS的绘图机制二 - iOS,iPad,iPhone,Objective-c
- iOS的绘图机制-iOS,iPad,iPhone,Objective-c
- iOS的绘图机制二 - iOS,iPad,iPhone,Objective-c
- ipad弹出窗口
- 在Cocoa里用objective-c判断设备类型:iPhone, iPod Touch, iPad
- (iphone/ipad)浅谈Objective-C中release和nil的关系
- 在Cocoa里用objective-c判断设备类型:iPhone, iPod Touch, iPad
- 如何使用Objective-C获取iPhone/iPad内全部字体的Fontfamily和FontName?
- Objective-C的欢迎度随着iPad和iPhone的衰退而衰减
- iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引
- iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引
- iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引
- iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引
- iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引
- ipad弹出中间设置界面
- iPad 弹出照片控制器失败
- 内的异常功能
- aircrack-ng 添加Mac OS X 支持 airodump-ng和aireplay-ng都可以用了
- Redis常用命令
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- 抛出一个异常
- Objective-C:Ipad弹出框
- alibaba——研发/算法笔试题1
- 不处理异常本身
- UI设计--搜索框
- leetcode-First Missing Positive
- Mac升级 QQ截图无法使用
- 黑马程序员-网络编程
- POJ 试题分类
- jquery+java 仿Google日历 .