一起来写个有协议的关灯
#import "MainViewController.h"
#import "MyView.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
NSInteger number = 101;
for (int i = 1; i < 11; i++) {
for (int j = 1; j < 9; j++) {
// 计算需要的View
MyView *view = [[MyView alloc] initWithFrame:CGRectMake(45 * j - 35 , 60 + 45 * i, 40, 40)];
[self.view addSubview:view];
view.tag = number++;
view.delegate = self;
// 查看tag值
NSLog(@"%ld", view.tag);
}
}
}
- (void)dianji:(UIView *)view {
//判断条件
if ((view.tag - 100) % 8 == 0) {
//根据Tag值取出对应的view
if ([self.view viewWithTag:view.tag].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag - 1].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag - 1].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag - 1].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag + 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag - 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor redColor];
}else if ((view.tag - 100) % 8 == 1)
{
if ([self.view viewWithTag:view.tag].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag + 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag - 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag + 1].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag + 1].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag + 1].backgroundColor = [UIColor redColor];
}else {
if ([self.view viewWithTag:view.tag].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag - 1].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag - 1].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag - 1].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag + 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag + 8].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag - 8].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag - 8].backgroundColor = [UIColor redColor];
if ([self.view viewWithTag:view.tag + 1].backgroundColor == [UIColor redColor]) {
[self.view viewWithTag:view.tag + 1].backgroundColor = [UIColor brownColor];
}else [self.view viewWithTag:view.tag + 1].backgroundColor = [UIColor redColor];
}
}
@protocol viewDelegate <NSObject>
@optional
- (void)button:(UIView *)view;
@end
@interface MyView : UIView
@property (nonatomic, assign) id<viewDelegate>delegate;
@end
@implementation MyView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor brownColor];
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.delegate button:self];
}