自定义带有uitableview的alertview对话框
#import <UIKit/UIKit.h>
typedef void(^MyCompleteHandler) (NSString *selectString);
@interface TJCustomAlertViewOrTableView : UIView
{
MyCompleteHandler completeHandler;
}
@property(nonatomic,strong)NSMutableArray *dataSoureArray;
+(TJCustomAlertViewOrTableView *)shareInStance;
+(void)showAlertViewOrTableViewandCompleteHandler:(MyCompleteHandler)myCompleteHander;
-(void)showAlertViewOrTableViewandCompleteHandler:(MyCompleteHandler)myCompleteHander; @end
#import "TJCustomAlertViewOrTableView.h"
#define kcontentViewSize CGSizeMake(200.0f, 250.0f);
@interface TJCustomAlertViewOrTableView ()<UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate>
{
UITableView *myTableView;
UIView *contentView;
UIButton *okBtn;
NSInteger selectRow;
}
@end @implementation TJCustomAlertViewOrTableView
+(TJCustomAlertViewOrTableView*)shareInStance
{
static TJCustomAlertViewOrTableView *customAlertViewOrTableView;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ customAlertViewOrTableView=[[TJCustomAlertViewOrTableView alloc]init];
});
return customAlertViewOrTableView; }
-(instancetype)init
{
if (self=[super init]) {
[self setUp];
}
return self;
}
-(void)setUp
{
self.backgroundColor=[UIColor colorWithRed: green: blue: alpha:0.5f];
self.frame=[UIScreen mainScreen].bounds;
CGRect frect=CGRectZero;
frect.size=kcontentViewSize;
frect.origin.x=[UIScreen mainScreen].bounds.size.width/4.0f;
frect.origin.y=[UIScreen mainScreen].bounds.size.height/4.0f; contentView=[[UIView alloc]initWithFrame:frect];
contentView.backgroundColor=[UIColor whiteColor];
contentView.layer.masksToBounds=YES;
contentView.layer.cornerRadius=8.0f;
[self addSubview:contentView];
UITapGestureRecognizer *tapBackGround=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissAlertViewOrTableView:)];
tapBackGround.delegate=self;
[self addGestureRecognizer:tapBackGround]; okBtn=[UIButton buttonWithType:UIButtonTypeCustom];
okBtn.translatesAutoresizingMaskIntoConstraints=NO;
[okBtn setTitle:@"确定" forState:UIControlStateNormal];
[okBtn addTarget:self action:@selector(dismissView:) forControlEvents:UIControlEventTouchUpInside];
[okBtn setBackgroundColor:[UIColor redColor]];
[contentView addSubview:okBtn];
NSArray *constraint_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[okBtn]-5-|" options: metrics:nil views:NSDictionaryOfVariableBindings(okBtn)];
NSArray *constraint_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:[okBtn(44)]-5-|" options: metrics:nil views:NSDictionaryOfVariableBindings(okBtn)]; [contentView addConstraints:constraint_H];
[contentView addConstraints:constraint_V]; myTableView=[[UITableView alloc]init];
myTableView.translatesAutoresizingMaskIntoConstraints=NO;
myTableView.delegate=self;
myTableView.dataSource=self;
[contentView addSubview:myTableView]; NSArray *tableView_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[myTableView]-0-|" options: metrics:nil views:NSDictionaryOfVariableBindings(myTableView,okBtn)]; NSArray *tableView_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[myTableView]-49-|" options: metrics:nil views:NSDictionaryOfVariableBindings(myTableView,okBtn)];
[contentView addConstraints:tableView_H];
[contentView addConstraints:tableView_V]; }
-(void)dismissView:(UIButton *)sender
{
if (completeHandler)
{
completeHandler(_dataSoureArray[selectRow]);
}
[self hideView]; }
-(void)dismissAlertViewOrTableView:(UITapGestureRecognizer *)tapGesture
{
CGPoint point=[tapGesture locationInView:self];
if (!CGRectContainsPoint(myTableView.frame, point)) {
[self hideView];
} }
-(void)showView
{
UIWindow *keyWindow=[UIApplication sharedApplication].keyWindow;
[keyWindow addSubview:self];
contentView.alpha=;
contentView.transform=CGAffineTransformMakeScale(0.01f, 0.01f);
[UIView animateWithDuration:0.3f animations:^{
contentView.alpha=1.0f;
contentView.transform=CGAffineTransformMakeScale(1.0f, 1.0f); }];
}
-(void)hideView
{
[UIView animateWithDuration:0.3f animations:^{ contentView.alpha=;
contentView.transform=CGAffineTransformMakeScale(0.01f, 0.01f);
} completion:^(BOOL finished) { [self removeFromSuperview];
}];
} +(void)showAlertViewOrTableViewandCompleteHandler:(MyCompleteHandler)myCompleteHander
{
[[TJCustomAlertViewOrTableView shareInStance] showAlertViewOrTableViewandCompleteHandler:myCompleteHander]; }
-(void)showAlertViewOrTableViewandCompleteHandler:(MyCompleteHandler)myCompleteHander
{
completeHandler=myCompleteHander;
[self showView];
} #pragma mark -UITableViewDataSource or UITableViewDelegate -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return ;
} -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _dataSoureArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
cell.textLabel.text=_dataSoureArray[indexPath.row];
return cell; }
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44.0f;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectRow=indexPath.row;
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if(touch.view==myTableView)
{
return YES;
}
return NO; }
@end #import "ViewController.h"
#import "TJCustomAlertViewOrTableView.h"
@interface ViewController ()
{
NSMutableArray *dataArray;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
dataArray=[NSMutableArray array];
for (int i=; i<; i++) {
[dataArray addObject:[NSString stringWithFormat:@"test%d",i]];
}
// Do any additional setup after loading the view, typically from a nib.
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)showViewBtnClick:(UIButton *)sender
{
[TJCustomAlertViewOrTableView shareInStance].dataSoureArray=dataArray;
// [[TJCustomAlertViewOrTableView shareInStance]showAlertViewOrTableViewandCompleteHandler:^(NSString *selectString) {
//
// NSLog(@"selectString=%@",selectString);
// }]; [TJCustomAlertViewOrTableView showAlertViewOrTableViewandCompleteHandler:^(NSString *selectString) { NSLog(@"selectString=%@",selectString);
}]; } @end
自定义带有uitableview的alertview对话框的更多相关文章
- 雷林鹏分享:jQuery EasyUI 窗口 - 自定义带有工具条和按钮的对话框
jQuery EasyUI 窗口 - 自定义带有工具条和按钮的对话框 您可以创建一个带有工具栏(toolbar)和按钮(button)的对话框(dialog),可以从 HTML 标记创建.这个教程描述 ...
- 自定义带有图片的PreferenceActivity
http://my.oschina.net/huangsm/blog/40027 和大家分享一下关于android中PreferenceActivity使用以及为配置信息文件中添加图标的功能,首先给大 ...
- 带有关闭按钮的alertView
概述 由于讨厌系统自带的alertView只能通过点击按钮才能关闭.你说万一按钮区域都是功能性的操作呢(这可不是我胡思乱想哦,要怪就产品的想法吧,呵呵哒),所以我们还是应该备有一个带有“X”(关闭按钮 ...
- iOS开发小技巧--自定义带有占位文字的TextView(两种方式)
自定义控件注意或框架注意:自己暴露在外面的属性,一定要重写setter,保证外界与内部的交互性 一.方案一:通过drawRect:方法将文字画到textView中,监听文字改变用的是通知中心(代理也可 ...
- jQueryWEUI自定义对话框-带有textarea
jQueryWEUI 示例下载 在jQueryWEUI中提供了很多类型的对话框, 可以去访问看一下. 今天记录的则是,自己定义的一个带有文本域的对话框,这样,可以不通过调转页面,实现一些信息的提交. ...
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)
前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...
- 安卓 Dialogs(对话框)
转载自:http://www.apkbus.com/home.php?mod=space&uid=679028&do=blog&id=61197 对话框是一个小的窗口用以提示用 ...
- JOptionPane如何自定义按钮绑定事件
JOptionPane如何自定义按钮绑定事件 2018年01月29日 19:27:10 阅读数:475 摘自:https://blog.csdn.net/m0_37355951/article/det ...
- iOS学习31之UITableVIewCell自定义
1. 自定义Cell 1> 为什么要自定义Cell UITableView 中系统的Cell共提供了四种默认样式, 分别是: UITableViewCellStyleDefault UITab ...
随机推荐
- js上三行下三行和添加多个附件
function addTr(num) { no ++; var obj = document.getElementById(tableID); var oneRow = obj.insertRow( ...
- 缓存需要注意的问题以及使用.net正则替换字符串的方法
参考资料:http://www.infoq.com/cn/news/2015/09/cache-problems 正则替换字符串的简单方法: var regTableType = new Regex( ...
- Heritrix 3.1.0 源码解析(三十七)
今天有兴趣重新看了一下heritrix3.1.0系统里面的线程池源码,heritrix系统没有采用java的cocurrency包里面的并发框架,而是采用了线程组ThreadGroup类来实现线程池的 ...
- hdoj 5417 Victor and Machine
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5417 水题,一开始题目读错了做了好久,每次停工以后都是重新计时. 需要注意的是,先除后乘注意加括号 # ...
- xiaocms 关于搜索功能 添加搜索字段
自己折磨了好几天 就是没研究个出像样的的东西 看了一下 core/controller/index.php searchAction()方法 但是不知从何下手.查了sql语句,还是没实现 请教了一位自 ...
- 如何让windows服务器IIS支持.apk/.ipa文件下载
打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的“MIME类型”按钮,打开MIME类型设置窗口: 单击“新建”,建立新的MIME类型: 扩展名是:.apk MI ...
- SOA服务开发小计
http://item.jd.com/11181846.html#comment SOA面向服务架构——SOA的概念 http://www.cnblogs.com/leslies2/archive/2 ...
- VTK序列图像的读取[转][改]
医学图像处理的应用程序中,经常会碰到读取一个序列图像的操作.比如CT.MR等所成的图像都是一个切面一个切面地存储的,医学图像处理程序要处理这些数据,第一步当然是把这些数据从磁盘等外部存储介质中导入内存 ...
- opennebula 创建模板【配置集群、配置VNC、配置RAW、配置SSH】
{ "vmtemplate": { "NAME": "bbbb", "MEMORY": "512", ...
- js页面文字选中后分享到新浪微博实现
demo您可以狠狠地点击这里:js文字选中分享到新浪微博demo 方法与代码 选中即分享的功能看上去比较高级,其实实现是相当简单的.其中的会让人头大,一般人也不感兴趣的原理这里就直接跳过.这个js文字 ...