ios 中没有下拉组件,下面是自己实现的分享给大家!
运行效果图:
[img]
[/img]
#import <UIKit/UIKit.h>
@protocol CloComboxDelegate;
@interface CloCombox : UIView <UITableViewDataSource, UITableViewDelegate>{
UIButton *title;
UITableView *cloTable;
}
@property (nonatomic, retain) id <CloComboxDelegate> delegate;
@property (nonatomic, retain) NSArray *tableItems;
- (void)setTitle:(NSString *)titleStr;
- (id)initWithFrame:(CGRect)frame items:(NSArray *)items inView:(UIView *)view;
@end
@protocol CloComboxDelegate <NSObject>
- (void)itemDidSelected:(NSInteger)index;
@end
实现:
#import "CloCombox.h"
@implementation CloCombox
@synthesize delegate, tableItems;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (id)initWithFrame:(CGRect)frame items:(NSArray *)items inView:(UIView *)view{
self = [self initWithFrame:frame];
self.tableItems = items;
title = [UIButton buttonWithType:UIButtonTypeCustom];
[title setFrame:CGRectMake(0, 0, frame.size.width, 25)];
[title setTitle:@"未选择" forState:UIControlStateNormal];
[title setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
[title addTarget:self action:@selector(titleBtnDidTaped:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:title];
cloTable = [[UITableView alloc] initWithFrame:CGRectMake((view.frame.size.width - frame.size.width)/2, 0, frame.size.width, 30*items.count) style:UITableViewStylePlain];
cloTable.delegate = self;
cloTable.dataSource = self;
cloTable.hidden = YES;
[view addSubview:cloTable];
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
- (void)setTitle:(NSString *)titleStr{
[title setTitle:titleStr forState:UIControlStateNormal];
}
- (IBAction)titleBtnDidTaped:(id)sender{
cloTable.hidden = !cloTable.hidden;
}
- (void)dealloc{
[super dealloc];
[title release];
[cloTable release];
}
#pragma mark-
#pragma table view datasource
- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 30;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return tableItems.count;
}
- (UITableViewCell* )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"CELLIDENTIFIER";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
//if sdk version is below 6.0 instead by UITextAlignmentCenter
[cell.textLabel setTextAlignment:NSTextAlignmentCenter];
}
cell.textLabel.text = [tableItems objectAtIndex:indexPath.row];
return cell;
}
#pragma mark -
#pragma mark tableview delegate methods
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self setTitle:[tableItems objectAtIndex:indexPath.row]];
tableView.hidden = YES;
if ([delegate respondsToSelector:@selector(itemDidSelected:)]) {
[delegate itemDidSelected:indexPath.row];
}
}
@end
- 大小: 15 KB
分享到:
相关推荐
在iOS应用开发中,尤其是构建用户界面时,我们经常需要对系统的原生组件进行自定义以提供更加个性化和丰富的用户体验。本主题聚焦于如何在iPhone应用程序中实现自定义Tabbar,包括滑片效果和按钮跳跃动画,这将极大...
本篇文章将深入探讨如何在iPhone开发中实现自定义TabBar,以提升应用的用户体验和视觉效果。 首先,我们要了解TabBar的基本概念。TabBar是iOS SDK中的UITabBarController类的一部分,它提供了一个底部栏,通常包含...
"iPhone之实现自定义进度条Progress"这个主题将引导我们探讨如何在iPhone应用中利用Swift编程语言来设计并实现一个个性化的进度条组件。我们将深入讨论以下几个关键知识点: 1. **UIProgressView**: iOS SDK提供了...
本资源“IOS源码应用Demo-iphone开发技巧UI篇之自定义TabBar CustomTabBar.zip”聚焦于一个特定的UI组件:自定义TabBar,这对于提升应用的个性化和专业性具有重要意义。TabBar是iOS应用中常见的导航元素,通常位于...
本教程将深入探讨如何在iPhone开发中自定义UIButton,创建具有类似UIRadioButton功能的控件。 首先,我们要了解UIButton的基本属性和使用方法。UIButton类提供了多种样式,如系统样式(System)、定制图像样式...
本教程将深入讲解如何基于`UIButton`自定义一个`UICheckBox`,这对于初学者了解控件自定义和事件处理非常重要。 首先,我们需要明白`UICheckBox`是一个模仿传统桌面应用中复选框功能的控件,通常包含两种状态:选中...
### 自定义iPhone铃声知识点详解 #### 一、前言 在数字时代,个性化成为越来越多人追求的目标之一。对于iPhone用户来说,自定义铃声无疑是一种展现个性的方式。本篇文章将详细介绍如何通过简单的步骤实现iPhone...
这篇文章将详细介绍如何在iPhone开发中利用Xib来创建自定义的UITableViewCells。 首先,我们需要理解UITableViewCell的基本结构。UITableViewCell是用于展示在UITableView中的数据单元,每个cell通常包含一些标签、...
在微信小程序中,开发一款仿iPhone通讯录的自定义选择组件是一项常见的需求,尤其是在构建具有原生体验的应用时。这个组件通常需要实现的功能包括:滑动选择、分组展示联系人、搜索过滤以及点击选中等。下面我们将...
在iOS应用开发中,创建一个仿iPhone日期选择的自定义控件是一项常见的需求。这个控件通常用于让用户方便地选取特定的日期和时间,比如在预订、设置提醒或记录事件时。在这里,我们将深入探讨如何实现这样一个功能...
这个“iphone 自定义键盘实例”是一个实际的项目,可以帮助开发者了解如何创建自己的键盘应用。虽然方法可能较为基础,但它提供了一个学习自定义键盘实现的良好起点。 在iOS中,自定义键盘的开发主要涉及以下知识点...
Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码...
"swift-模仿iPhone本地通知自定义写了一个本地通知动画"这个项目,就是开发者通过Swift语言,参照iPhone原生的本地通知样式,自定义实现的一个本地通知动画。这种自定义通知动画能够使应用程序的通知呈现方式更加...
Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...
Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...
本文将深入探讨如何在iPhone上实现自定义状态栏,并通过示例项目StatusViewDemo进行讲解。 首先,我们要理解iOS中的状态栏是显示网络、时间、电量等系统信息的区域。在默认情况下,开发者对状态栏的控制有限,但...
在Android平台上,开发一款录音应用并模仿iPhone录音效果,往往涉及到对用户界面的精心设计以及音频处理技术的应用。本文将详细探讨如何实现自定义声音波纹这一关键元素,以达到类似iPhone录音应用的用户体验。 ...
Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发...
《iPhone开发基础教程》内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过《iPhone开发基础教程》快速学习iPhone开发,提高相关技能。iPhone 是一种全新的移动平台,苹果公司为它推出了强大的软件开发...