项目已经完成了,设计师说导航栏的返回按钮丑,重新弄。这个确实不难。但是我重新自定义的视图添加到UIbarButtonItem上以后还需要有点击事件,就还需要在写一个返回的方法。所以一个界面要在两处修改。因为界面多,每个界面都修改两处我闲多,就想添加返回按钮的时候加上Block这样可以写一处就可以了。
自己写了一阵没有成功,只能说水平太浅需要借鉴被人的。参考大神的网址:IOS开发之自定义Button, 我要实现的功能很简单,比大神写的还简单,只是我项目中够用了,以后再用时再写。我的需求是把导航栏的返回按钮变成一个图片,点击返回。
1.自定义了一个按钮,继承于UIView
2.先声明一个block
typedef void(^BackButtonWillBlock) (BackButton *sender);
3.写创建按钮的类方法,带block
+ (instancetype)buttonWithBlock:(BackButtonWillBlock)block;
4.在.m文件的匿名拓展中再声明一个Block做中转站
@property (nonatomic, strong) BackButtonWillBlock willBlock;
5.实现类方法
+ (instancetype)buttonWithBlock:(BackButtonWillBlock)block {
BackButton *btn = [[BackButton alloc] initWithFrame:CGRectMake(0, 0, kSize(9), kSize(12/7.0*9))];
btn.image = [UIImage imageNamed:@"back"]; // 这个返回按钮我只需要一个图片
btn.willBlock = block; // 将block给中转站
return btn;
}
6.实现按钮的点击方法,我用的UIView的开始点击事件
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event {
if (self.willBlock) {
self.willBlock(self);
}
}
7.在Controller使用时就很简单了
// 返回按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[BackButton buttonWithBlock:^(BackButton *sender) {
[self.navigationController popViewControllerAnimated:YES];
}]];
感觉在一个地方写比在两个地方写省事。
拙文不成敬意,希望有大神指点。