1 保存代码
//tableViewController.h #import "TableViewController.h" #import "CellItem.h" @interface TableViewController () @property (nonatomic, strong) NSArray *items; @end @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; //创建模型 CellItem *item1 = [CellItem itemWithTitle:@"打电话"]; item1.block = ^{ NSLog(@"打电话"); }; CellItem *item2 = [CellItem itemWithTitle:@"发短信"]; item2.block = ^{ NSLog(@"发短信"); }; CellItem *item3 = [CellItem itemWithTitle:@"发邮件"]; item3.block = ^{ NSLog(@"发邮件"); }; _items = @[item1,item2,item3]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _items.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"cell"; //从缓存池取出cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } CellItem *item = self.items[indexPath.row]; cell.textLabel.text = item.title; return cell; } //点击cell就会调用 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //把要做的事情(代码)保存到模型 CellItem *item = self.items[indexPath.row]; if (item.block) { item.block(); } } @end
//CellItem.h #import <Foundation/Foundation.h> @interface CellItem : NSObject //设计模型:控件需要展示什么内容,就定义什么属性 @property (nonatomic, strong) NSString *title; //保存每个cell做的事情 @property (nonatomic, strong) void(^block)(); + (instancetype)itemWithTitle:(NSString *)title; @end //CellItem.m #import "CellItem.h" @implementation CellItem + (instancetype)itemWithTitle:(NSString *)title { CellItem *item = [[self alloc] init]; item.title = title; return item; } @end
2 代理传值
//ViewController.m #import "ViewController.h" #import "ModalViewController.h" @interface ViewController () @end @implementation ViewController - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { ModalViewController *modalVC = [[ModalViewController alloc] init]; modalVC.view.backgroundColor = [UIColor blueColor]; modalVC.block = ^(NSString *value) { NSLog(@"%@", value); }; //跳转 [self presentViewController:modalVC animated:YES completion:nil]; } @end
//ModalViewController.h #import "ViewController.h" @interface ModalViewController : ViewController @property (nonatomic, strong) void(^block)(NSString *); @end
//ModalViewController.m #import "ModalViewController.h" @interface ModalViewController () @end @implementation ModalViewController - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { if(_block) { _block(@"123"); } } @end