弹出视图
2015-06-07 19:50
323 查看
开发时经常会遇到一些,在点击某个按钮弹出一个视图,视图浮于现视图的上面的情形,总结一下:
思路:
1.自定义一个view,比如叫popView,它继承于UIView而创建,popView即弹出视图,在这个自定义的popView里面,可以写入弹出视图里面的一些内容。
2.由于这个弹出视图是由于某个Controller里面的某个按钮触发的方法实现的,所以在触发的方法里面,实现这个视图的创建。
3.另外,特别注意,弹出视图上还应有个按钮,点击这个按钮,弹出视图则消失了,由于这个按钮是在自定义的popView中添加的,而这个按钮触发的使得这个弹出视图消失的方法,却无法在这里面实现,所以可以通过一个代理方法实现,即:popView是委托方,Controller是代理方,当popView中的按钮被点击了时,Controller就将这个弹出视图移除掉。
代码如下:
PopupView *_infoView;
NSMutableArray *dataArray; //加入了用于保存数组的数组 dataArray
//保存每次修改的数据;
NSMutableArray *_sendArray;
}
PopupView *_infoView;
}
(void)viewDidLoad {
[super viewDidLoad];
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
[btn setTitle:@”弹出视图按钮” forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize:20];
[btn addTarget:self action:@selector(popUp:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
(void)popUp:(UIButton *)sender
{
if (_infoView == nil) {
CGRect bounds = [[UIScreen mainScreen]bounds];
}else
{self.view.alpha = 0.5f;
[[UIApplication sharedApplication].keyWindow addSubview:_infoView];
}
}
{
if (_infoView.superview) {
self.view.alpha = 1.0f;
[_infoView removeFromSuperview];//视图从父视图移除 (如果_infoView的父视图存在,就将它从父视图中移除)
}
}
思路:
1.自定义一个view,比如叫popView,它继承于UIView而创建,popView即弹出视图,在这个自定义的popView里面,可以写入弹出视图里面的一些内容。
2.由于这个弹出视图是由于某个Controller里面的某个按钮触发的方法实现的,所以在触发的方法里面,实现这个视图的创建。
3.另外,特别注意,弹出视图上还应有个按钮,点击这个按钮,弹出视图则消失了,由于这个按钮是在自定义的popView中添加的,而这个按钮触发的使得这个弹出视图消失的方法,却无法在这里面实现,所以可以通过一个代理方法实现,即:popView是委托方,Controller是代理方,当popView中的按钮被点击了时,Controller就将这个弹出视图移除掉。
代码如下:
//PopupView的.h文件 @protocol popupDelegate <NSObject> - (void)popUpRemove;//点击弹出视图的按钮时触发的使得弹出视图消失的方法 @end @interface PopupView : UIView @property (nonatomic,assign) id<popupDelegate>delegate; @end
#import "PopupView.h"//PopupView的.m文件 @implementation PopupView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor whiteColor]; // self.center = self.superview.center; CGRect bounds = [[UIScreen mainScreen]bounds]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y+5, self.frame.size.width/3, 20)]; label.text = @"说明"; label.font = [UIFont systemFontOfSize:15]; [self addSubview:label]; UIButton *backBtn = [[UIButton alloc]initWithFrame:CGRectMake(self.frame.origin.x+200, self.frame.origin.y+5,15,15)]; [backBtn setBackgroundImage:[UIImage imageNamed:@"xiao"] forState:UIControlStateNormal]; [backBtn addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:backBtn]; } return self; } - (void)back:(UIButton *)sender { if (self.delegate && [self.delegate respondsToSelector:@selector(popUpGoTo)]) { [self.delegate popUpGoTo]; } }
import “QuotedListViewController.h”
import “AFNetworking.h”
import “QuotedListTableViewCell.h”
import “OrderModel.h”
import “MyNavigationButton.h”
import “PopupView.h”
define key_productId @”productId”//商品ID
define key_productName @”productName”
define key_publishCount @”publishCount”
define key_count @”count”
define key_price @”price”
@interface QuotedListViewController (){PopupView *_infoView;
NSMutableArray *dataArray; //加入了用于保存数组的数组 dataArray
//保存每次修改的数据;
NSMutableArray *_sendArray;
NSArray *_keyArray;
}
import “ViewController.h”
import “PopupView.h”
@interface QuotedListViewController (){PopupView *_infoView;
}
(void)viewDidLoad {
[super viewDidLoad];
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
[btn setTitle:@”弹出视图按钮” forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize:20];
[btn addTarget:self action:@selector(popUp:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
(void)popUp:(UIButton *)sender
{
if (_infoView == nil) {
CGRect bounds = [[UIScreen mainScreen]bounds];
self.view.alpha = 0.5f; _infoView= [[PopupView alloc]initWithFrame:CGRectMake(bounds.origin.x, bounds.origin.y, 230, 260)]; _infoView.delegate = self; CGPoint centerPoint=CGPointMake(self.view.center.x, 300); _infoView.center = centerPoint; [[UIApplication sharedApplication].keyWindow addSubview:_infoView];//加到主窗口上面
}else
{self.view.alpha = 0.5f;
[[UIApplication sharedApplication].keyWindow addSubview:_infoView];
}
}
pragma mark 代理实现方法
(void)popUpRemove{
if (_infoView.superview) {
self.view.alpha = 1.0f;
[_infoView removeFromSuperview];//视图从父视图移除 (如果_infoView的父视图存在,就将它从父视图中移除)
}
}
相关文章推荐
- 远程计算_通信协议
- 军医王-moTestin云测试看好移动医疗行业
- 李安
- npm and node 的一些问题
- 常见MFC UI界面库
- 代理模式(Proxy)
- document.ready 的原生js实现
- HTML5
- Android中实现异步任务机制方式:AsyncTask
- 新建了CSDN博客,希望记录我的android学习历程
- #include<filename.h>和#include"filename.h"的区别
- Angular Js
- 第一次冲刺期——每日站立会议——个人记录——文档
- 我只信仰我自己。
- EIGRP基本配置
- EIGRP基本配置
- 3076神奇的加法(sdut)
- zookeeper简介
- vector数组中删除相同元素(输入的元素输出时只能出现一次)
- 《梦断代码之读书笔记之一》