block的几种使用方式:
- blcok**作为类的属性 **
// block步骤
// 1.block属性
// 2.在哪执行block
// 3.在哪给block赋值
@interface YSTabBar : UIView
@property (copy, nonatomic) void (^buttonClickBlock)(NSInteger);
- (void)loadButtonWithImage:(UIImage*)image andImageSel:(UIImage*)imageSel;
@end
- blcok**作为方法参数替代代理的实现 **
@interface YSTabBar : UIView
/**
* blcok作为方法参数替代代理的去使用
.h中为:
*
* @param code 参数1:无返回值的block(code) 参数:自定义tabbar,切换控制器索引
* @param image 参数2:normal图片
* @param imageSelected 参数3:selected选中状态图片
*/
- (void)addButtonWithClickBlock:(void (^)(YSTabBar* tabbar, NSInteger clickIndex))code andImage:(UIImage*)image andSelectedImage:(UIImage*)imageSelected;
@end
- 当然也可以为block** 起别名** 利用 typedef
@class YSTabBar;
typedef void(^Code)(YSTabBar * tabbar, NSInteger clickIndex);
@interface YSTabBar : UIView
/**
* blcok作为方法参数替代代理的实现
*
* @param code 无返回值的block 参数:自定义tabbar,切换控制器索引
* @param image normal图片
* @param imageSelected selected选中状态图片
*/
//- (void)addButtonWithClickBlock:(void (^)(YSTabBar* tabbar, NSInteger clickIndex))code andImage:(UIImage*)image andSelectedImage:(UIImage*)imageSelected;
- (void)addButtonWithClickBlock:(Code )code andImage:(UIImage*)image andSelectedImage:(UIImage*)imageSelected;
@end
- 也可以用代理来实现
@class YSTabBar;
// 代理的步骤
// 1.协议
// 2.协议-代理方法
// 3.代理属性
// 4.在哪执行代理方法
// 5.在哪使用代理方法
@protocol YSTabBarDelegate <NSObject>
@optional
- (void)tabbar:(YSTabBar*)tabbar buttonClickWithIndex:(NSInteger)index;
@end
@interface YSTabBar : UIView
@property (weak, nonatomic) id<YSTabBarDelegate> delegate;
- (void)loadButtonWithImage:(UIImage*)image andImageSel:(UIImage*)imageSel;
@end
如果对你有帮助 不胜荣幸
邮箱地址:zh_yes@foxmail.com