当前位置: 代码迷 >> Iphone >> iphone开发之自定义上拉列表UIcombobox控件
  详细解决方案

iphone开发之自定义上拉列表UIcombobox控件

热度:15   发布时间:2016-04-25 06:30:40.0
iphone开发之自定义下拉列表UIcombobox控件

很多时候我们都会用到下拉列表框,闲着没事自己实现了一个共享之。

代码如下:

////  CLOCombobox.h//  CLOComboboxText////  Created by Cloay on 12-8-9.//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import <UIKit/UIKit.h>@interface CLOCombobox : UIView<UITableViewDelegate, UITableViewDataSource>{    NSArray *array;    UITextField *textField;    UITableView *comboboxItems;}- (id)initWithFrame:(CGRect)frame withItems:(NSArray *)items withSuperView:(UIView *)view;@end

实现如下:

////  CLOCombobox.m//  CLOComboboxText////  Created by Cloay on 12-8-9.//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "CLOCombobox.h"#define itemHeight 35#define tableviewHeight 180@implementation CLOCombobox- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code    }    return self;}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{    // Drawing code}*/- (id)initWithFrame:(CGRect)frame withItems:(NSArray *)items withSuperView:(UIView *)view{    self = [super initWithFrame:frame];    [self setBackgroundColor:[UIColor clearColor]];        //文本框    textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 4, frame.size.width, frame.size.height - 4)];    [textField setBorderStyle:UITextBorderStyleRoundedRect];    [textField setBackgroundColor:[UIColor whiteColor]];    [textField setEnabled:NO];//    [textField setB]//    [textField setTextAlignment:UITextAlignmentCenter];    //默认显示0处的文字    textField.text = [items objectAtIndex:0];    [self addSubview:textField];        //下拉按钮    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];    [button setFrame:CGRectMake(4*frame.size.width/5, 0, frame.size.height, frame.size.height)];    [button setImage:[UIImage imageNamed:@"arrow_down"] forState:UIControlStateNormal];    [button addTarget:self action:@selector(buttonDidPressed:) forControlEvents:UIControlEventTouchUpInside];    [self addSubview:button];        array = [items mutableCopy];        comboboxItems = [[UITableView alloc] initWithFrame:CGRectMake(frame.origin.x, frame.origin.y + frame.size.height, self.frame.size.width, tableviewHeight) style:UITableViewStyleGrouped];    comboboxItems.bounces = NO;    comboboxItems.delegate = self;    comboboxItems.dataSource = self;    comboboxItems.hidden = YES;        [comboboxItems setBackgroundColor:[UIColor clearColor]];    [view addSubview:comboboxItems];    return self;}- (void)buttonDidPressed:(id)sender{    comboboxItems.hidden = NO;}#pragma mark - #pragma mark - table view data source- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return [array count];}- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return 1;}- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    return itemHeight;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString *identifier = @"CELL";    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];        [cell.textLabel setFont:[UIFont systemFontOfSize:14]];        [cell setSelectionStyle:UITableViewCellEditingStyleNone];    }    cell.textLabel.text = [array objectAtIndex:[indexPath row]];    return cell;}#pragma mark - table view delegate- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSLog(@"row - >%i", [indexPath row]);    //选中后显示    textField.text = [array objectAtIndex:[indexPath row]];    comboboxItems.hidden = YES;}@end
代码比较简单,就不过多解释了。

有问题请留言,大家一起交流学习!
说明:转载请注明出处!


  相关解决方案