#import <UIKit/UIKit.h>
@protocol PushBankCardDelegate <NSObject>
- (void)PushBankCardBindingView;
- (void)showbankcardInfo:(NSInteger) index;
@interface ComBox :UIView<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate>
{
UITableView *tv;//下拉列表
NSMutableArray *tableArray;//下拉列表数据
UITextField *textField;//文本输入框
CGFloat tabheight;//table下拉列表的高度
CGFloat frameHeight;//frame的高度
}
@property (nonatomic,retain) id <PushBankCardDelegate> delegate;
@property (nonatomic,retain)UITableView *tv;
@property (nonatomic,retain)NSMutableArray *tableArray;
@property (nonatomic,assign) BOOL showList;
@property (nonatomic,retain)UITextField *textField;
标记
//@property BOOL editeState;
@end
#import "ComBox.h"
#import "BankCardBindingViewController.h"
@implementation ComBox
@synthesize tv,tableArray,textField;
- (id)initWithFrame:(CGRect)frame
{
if (frame.size.height<200) {
frameHeight = 200;
}else{
frameHeight = frame.size.height;
}
tabheight = frameHeight-30;
frame.size.height =30.0f;
self = [superinitWithFrame:frame];
if(self){
_showList = NO;//默认不显示下拉框
tv = [[UITableViewalloc] initWithFrame:CGRectMake(0,30, frame.size.width +80 , 0)];
tv.delegate =self;
tv.dataSource =self;
tv.backgroundColor = [UIColorclearColor];
tv.separatorColor = [UIColorlightGrayColor];
tv.hidden =YES;
// //初始化状态编辑
// self.editeState = YES;
[selfaddSubview:tv];
textField = [[UITextFieldalloc] initWithFrame:CGRectMake(0,0, frame.size.width +80, 30)];
textField.font = [UIFontsystemFontOfSize:13.0f];
//textField.userInteractionEnabled = NO;
textField.borderStyle=UITextBorderStyleRoundedRect;//设置文本框的边框风格
[textFieldaddTarget:selfaction:@selector(dropdown)forControlEvents:UIControlEventAllTouchEvents];
[selfaddSubview:textField];
}
return self;
}
-(void)dropdown{
[textField resignFirstResponder];
if (_showList) {//如果下拉框已显示,什么都不做
tv.hidden =YES;
_showList = NO;
return;
}else {//如果下拉框尚未显示,则进行显示
//把dropdownList放到前面,防止下拉框被别的控件遮住
[self.superviewbringSubviewToFront:self];
tv.hidden =NO;
_showList = YES;//显示下拉框
CGRect frame = tv.frame;
tabheight =tableArray.count*50;
frameHeight =tabheight;
CGRect sf = self.frame;
sf.size.height =frameHeight+40;
frame.size.height =tabheight;
[UIViewbeginAnimations:@"ResizeForKeyBoard"context:nil];
[UIViewsetAnimationCurve:UIViewAnimationCurveLinear];
self.frame = sf;
tv.frame = frame;
[UIViewcommitAnimations];
}
//tabview分割线左对齐
if ([self.tvrespondsToSelector:@selector(setSeparatorInset:)])
{
[self.tvsetSeparatorInset:UIEdgeInsetsZero];
}
if ([self.tvrespondsToSelector:@selector(setLayoutMargins:)])
{
[self.tvsetLayoutMargins:UIEdgeInsetsZero];
}
[tv reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [tableArraycount];
}
//tabview分割线左对齐
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)])
{
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)])
{
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier =@"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] ;
}
cell.textLabel.text = [tableArrayobjectAtIndex:[indexPath row]];
cell.textLabel.font = [UIFontsystemFontOfSize:13.0f];
cell.accessoryType =UITableViewCellAccessoryNone;
cell.selectionStyle =UITableViewCellSelectionStyleGray;
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger index = tableArray.count-1;
if(index == [indexPath row])
{
[self.delegate PushBankCardBindingView];
}
else
{
textField.text = [tableArray objectAtIndex:[indexPath row]];
[self.delegate showbankcardInfo:[indexPath row]];
}
_showList =NO;
tv.hidden =YES;
CGRect sf =self.frame;
sf.size.height =30;
self.frame = sf;
CGRect frame = tv.frame;
frame.size.height =0;
tv.frame = frame;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
设置单元格能否被移动
//-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
//{
//
// if (self.editeState)
// {
// return YES;//编辑状态可移动
// }
// else
// {
// return NO;
// }
//}
移动的方法
//-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
//{
// //移动的起始行
// NSInteger firstRow=[sourceIndexPath row];
// //移动的目标航
// NSInteger targetRow=[destinationIndexPath row];
// //开始移动
// [self.tableArray exchangeObjectAtIndex:firstRow withObjectAtIndex:targetRow];//数据的数组必须是可变的
//}
//
设置单元格能否被编辑
//-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
//{
// NSLog(@"%ld , %lu ",(long)indexPath.row,(unsigned long)tableArray.count);
// if (!indexPath.row - tableArray.count == 0)
// {
// return YES;
//
// }
// return NO;
//}
//
设置单元格被编辑的具体方法
//-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
//{
// //开始跟新
// [tableView beginUpdates];
// switch (editingStyle)
// {
case UITableViewCellEditingStyleInsert://添加
//往数组里添加
[self.data insertObject:@"太阳" atIndex:indexPath.row];
//添加到表格
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
// case UITableViewCellEditingStyleDelete://删除
// [self.tableArray removeObjectAtIndex:indexPath.row];
// //从表格删除
// [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
// break;
//
// default:
// break;
// }
// //结束跟新
// [tableView endUpdates];
//}
//#pragma mark - UITableViewDelegate
//
单元格编辑样式
//-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
//{
// if (self.editeState)
// {
// return UITableViewCellEditingStyleDelete;
// }
// else
// return UITableViewCellEditingStyleInsert;
//
//}
@end