block初尝试。
1,
@class seatObject; typedef void (^touchButtom) (seatObject *); @interface seatObject : UIView<VShowRoomServiceDelegate> { } @property (nonatomic ,strong)touchButtom block; @end
2,
@implementation seatObject @synthesize seatView,userNameLable,userSeatView,getBtr,block,changeType; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.getBtr = [UIButton buttonWithType:0]; self.getBtr.frame = CGRectMake(0, 10 + userNameLable.frame.size.height + userNameLable.frame.origin.y, frame.size.width, 20); [self.getBtr addTarget:self action:@selector(jump) forControlEvents:UIControlEventTouchUpInside]; self.getBtr.backgroundColor = [UIColor redColor]; [self addSubview:self.getBtr]; } return self; }
3,
- (void)jump { block(self); }
4,
seatObject *seat = [[seatObject alloc] initWithFrame:CGRectMake(i*seatWidth, 0, seatWidth, self.frame.size.height - tempHeigth)]; seat.tag = i; [seat changeTypeWithTag:1]; seat.block = ^(seatObject *seat) { DebugLog(@"%d %d",seat.tag, seat.changeType); }; [carView addSubview:seat];
__block VShowRoomViewController *roomViewController = self; 防止重复引用