代理
设置代理属性
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];
cell.index = indexPath.row;
cell.connetLabel.text = self.tableData[indexPath.row];
//代理
cell.delegate = self;
return cell;
}
Cell.h文件
@class MyTableViewCell;
//代理,制定协议
@protocol MyTableViewCelldelegate <NSObject>
- (void)deleteButtonAction:(NSInteger )index;
@property (nonatomic, assign)id <MyTableViewCelldelegate> delegate;
Cell.m文件
点击事件
- (IBAction)deleteAction:(id)sender {
//代理
[self.delegate deleteButtonAction:self.index];
}
Controller.m文件
实现方法
- (void)deleteButtonAction:(NSInteger )index {
[self.tableData removeObjectAtIndex:index];
[self.myTableView reloadData];
}
block
Cell.h文件
//block
@property(nonatomic,copy)void(^deleteButtonClick)(void);
Cell.m文件
//block
if (self.deleteButtonClick) {
self.deleteButtonClick();
}
Controller.m文件
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];
cell.index = indexPath.row;
cell.connetLabel.text = self.tableData[indexPath.row];
// block
cell.deleteButtonClick = ^{
[self deleteButtonAction:indexPath.row];
};
return cell;
}
实现方法
- (void)deleteButtonAction:(NSInteger )index {
[self.tableData removeObjectAtIndex:index];
[self.myTableView reloadData];
}
通知
Cell.m文件
- (IBAction)deleteAction:(id)sender {
//通知
NSString *str = [NSString stringWithFormat:@"%ld",self.index];
[[NSNotificationCenter defaultCenter] postNotificationName:@"NSNotfication_Name" object:str];
}
Controller.m文件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationAction:) name:@"NSNotfication_Name" object:nil];
-(void) notificationAction:(NSNotification *)note{
NSString *index = note.object;
[self deleteButtonAction:[index integerValue]];
}
- (void)deleteButtonAction:(NSInteger )index {
[self.tableData removeObjectAtIndex:index];
[self.myTableView reloadData];
}