自定义button

#import <UIKit/UIKit.h>
#define KFont 15 @interface DIYButton : UIButton @property(nonatomic,copy)NSString *ctrlName;
@end #import <UIKit/UIKit.h>
#define KFont 15 @interface DIYButton : UIButton @property(nonatomic,copy)NSString *ctrlName;
@end

自定义 view

@protocol FirstNavViewDelegate;

@interface FirstNavView : UIView

@property(nonatomic,retain)NSArray *data;
@property(nonatomic,assign)id<FirstNavViewDelegate> delegate;
- (id)initWithFrame:(CGRect)frame data:(NSArray *)adata;
@end @protocol FirstNavViewDelegate <NSObject> -(void)FirstNavViewClick:(DIYButton *)btn; @end #import "FirstNavView.h"
#import "InvoiceInfo.h"
#define KPadding 50
#define KMinTag 10 @implementation FirstNavView - (id)initWithFrame:(CGRect)frame data:(NSArray *)adata
{
self = [super initWithFrame:frame];
if (self) { CGFloat width=self.bounds.size.width/adata.count;
CGFloat height=self.bounds.size.height;
CGFloat center=width*0.5f;
for (int i=; i<adata.count; i++) {
DIYButton *btn=[[DIYButton alloc] init];
btn.bounds=CGRectMake(, , width-KPadding, height);
btn.center=CGPointMake(i*width+center, height*0.5f);
btn.tag=KMinTag+i;
[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
[btn release];
}
self.data=adata;//这一句是重点 }
return self;
} -(void)click:(DIYButton *)btn{
if (self.delegate &&[self.delegate respondsToSelector:@selector(FirstNavViewClick:)]) {
[self.delegate FirstNavViewClick:btn];
}
} -(void)setData:(NSArray *)data{
if (_data!=data) {
[_data release];
_data=[data retain];
for (int i=; i<data.count; i++) {
InvoiceInfo *info=data[i];
int tag=KMinTag+i;
UIView *view=[self viewWithTag:tag];
if ([view isKindOfClass:[DIYButton class]]) {
DIYButton *btn=(DIYButton *)view;
[btn setImage:[UIImage imageNamed:info.imagUrl] forState:UIControlStateNormal];
[btn setTitle:info.name forState:UIControlStateNormal];
btn.ctrlName=info.iPad_ctrls;
}
} }
} @end

使用 要实现

FirstNavViewDelegate这个协议

    //一级导航
NSMutableArray *NavArrary=[NSMutableArray array];
path=[[NSBundle mainBundle]pathForResource:@"Pad_Menu_First" ofType:@"json"];
NSError *navError=nil;
content=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&navError];
if (navError) {
NSLog(@"读取%@错误",path);
return;
}
NSArray *arr=[content JSONValue];
for (NSDictionary *dic in arr) {
InvoiceInfo *info=[InvoiceInfo Invoice:dic];
[NavArrary addObject:info];
} FirstNavView *navFirst=[[FirstNavView alloc] initWithFrame:tpRec data:NavArrary];
navFirst.delegate=self;
[self.view addSubview:navFirst];
[navFirst release];

-(void)FirstNavViewClick:(DIYButton *)btn{

NSLog(@"一级导航__%@__%@",btn.titleLabel.text,btn.ctrlName);

[selfpushNavVc:btn.ctrlName];

}

ios中自定义button的更多相关文章

  1. ios中自定义checkbox

    //自定义button#import <UIKit/UIKit.h> @interface CKButton : UIButton @end #import "CKButton. ...

  2. ios中自定义tableView,CollectionView的cell什么时候用nib加载,什么时候用标识重用

    做了一段时间的iOS,在菜鸟的路上还有很长的路要走,把遇到的问题记下来,好记性不如烂笔头. 在项目开发中大家经常会用到tableView和collectionView两个控件,然而在cell的自定义上 ...

  3. ios中自定义cell 设置cell的分组结构

    ios系统默认的cell并不能满足我们的需求 这个时候就需要自定义我们的cell 自定义cell为分组的时候 需要设置分组样式  以下是我常用分组的二种方法: 第一是 在自定义的UITableView ...

  4. iOS中 自定义cell分割线/分割线偏移 韩俊强的博客

    在项目开发中我们会常常遇到tableView 的cell分割线显示不全,左边会空出一截像素,更有甚者想改变系统的分割线,并且只要上下分割线的一个等等需求,今天重点解决以上需求,仅供参考: 每日更新关注 ...

  5. ios中自定义图层的2种方法

    1:自定义图层,在图层中画图 #import <QuartzCore/QuartzCore.h> @interface MJLayer : CALayer @end #import &qu ...

  6. ios中自定义图层

    图层和VIEW的区别 1:view不具备显示功能,是因view内部有一个图层,才能显示出来 2:图层不具备事件功能,VIEW继承UIRespone具有处理事件功能 3:自定义的图层有一个影式动画,VI ...

  7. iOS中自定义UITableViewCell的用法

    1.先创建一个View继承 UITableViewCell并使用xib快速建立模型. #import <UIKit/UIKit.h> #import "Score.h" ...

  8. iOS 中自定义 cell,点击cell的时候文字不出现的原因

    解决方案: 在setSelected方法中设置要显示label的背景颜色即可

  9. iOS中 自定义系统相机 作者:韩俊强

    需要框架: #import <AVFoundation/AVFoundation.h> #import <AssetsLibrary/AssetsLibrary.h> 布局如下 ...

随机推荐

  1. 关于html+ashx开发中几个问题的解决方法 (转)

    在跟html+ashx打交道的园友们肯定会发现,这种模式虽然优美,但在开发中会遇到一些难处理的地方.我也不例外,下面是自己在实际开发中总结出来的几条经验,希望跟大家分享,更希望得到大家的建议和更好的解 ...

  2. java去除字符串的html标签

    //方法一 public String stripHtml(String content) { // <p>段落替换为换行 content = content.replaceAll(&qu ...

  3. 泊松分布E(X^2)

    由于求期望实际就是求平均值,所以E(X^2)=E[X*X]=E[X*X]+E(X)-E(X)=E[X*X+X-X]=E[X(X-1)+X]E[X(X-1)+X]=E[X(X-1)]+E(X)即:和的平 ...

  4. css3中webkit内核的滚动栏样式

    项目其中用到的滚动栏样式,在别人的基础上调成适合自己的样式.(IE能够调试滚动栏样式,firefox眼下不能调试) ::-webkit-scrollbar { width: 14px; }/* Tra ...

  5. 条件随机场CRF HMM,MEMM的区别

    http://blog.sina.com.cn/s/blog_605f5b4f010109z3.html 首先,CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模,像词性标 ...

  6. pdf阅读器改背景色

  7. Andriod NDK assets的三个相关知识

    如何获取assetManager   engine->app->activity->assetManager     Asset文件应该放在哪个目录? 如何生成tga文件: 可以用这 ...

  8. [Functional Programming] Arrow contramap vs map and promap

    In previous post, Arrow Functor with contramap, we have seen how to opreating on params before we in ...

  9. 通过项目逐步深入了解Mybatis<二>

    Mybatis 解决 jdbc 编程的问题 1. 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig.xml中配置数据链接池 ...

  10. 配置Oracle访问SQL地理数据库

    Oracle访问空间数据 ArcSDE是ArcGIS的空间数据引擎,它是在关系数据库管理系统(RDBMS)中存储和管理多用户空间数据库的通路.以前连接方式有两种,服务连接与直接连接(简称"直 ...