我会这样做的。我有自己的 MyCustomCell 类,其中每个单元格都有按钮。
//MyCustomCell.h
@protocol MyCustomCellDelegate <NSObject>
-(void)deleteRecord:(UITableViewCell *)forSelectedCell;
@end
@interface MyCustomCell : UITableViewCell {
}
@property (nonatomic, strong) UIButton *deleteButton;
@property (unsafe_unretained) id<MyCustomCellDelegate> delegate;
@end
//MyCustomCell.m
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
if (self) {
self.deleteButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 150, 44)];
[self.deleteButton setTitle:@"Delete your record" forState:UIControlStateNormal];
[self.deleteButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
[self.deleteButton addTarget:self action:@selector(editRecord:) forControlEvents:UIControlEventTouchUpInside];
}
}
-(IBAction)editRecord:(id)sender {
[self.delegate deleteRecord:self]; // Need to implement whoever is adopting this protocol
}
--
// .h
@interface MyView : UIView <UITableViewDataSource, UITableViewDelegate, MyCustomCellDelegate> {
NSInteger rowOfTheCell;
注意:不要忘记将委托 MyCustomCellDelegate 设置为您的单元格。
// .m
-(void)deleteRecord:(UITableViewCell*)cellSelected
{
MyCustomCell *selectedCell = (MyCustomCell*)cellSelected;
UITableView* table = (UITableView *)[selectedCell superview];
NSIndexPath* pathOfTheCell = [table indexPathForCell:selectedCell]; //current indexPath
rowOfTheCell = [pathOfTheCell row]; // current selection row
[view.nameArray removeObjectAtIndex:rowOfTheCell];
[view.priceArray removeObjectAtIndex:rowOfTheCell];
[view.mainTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:pathOfTheCell] withRowAnimation:UITableViewRowAnimationRight];
}