1.气泡的使用
//哪些row显示长按气泡
- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {//0的位置不能显示气泡
return NO;
}
return YES;
}
//有哪些气泡按钮
- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{
if (action == @selector(paste:)) {
return NO;
}
return YES;
}
//当用户点击了气泡的按钮,实现什么方法
-(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{
if (action == @selector(cut:)) {
NSLog(@"用户点击了剪切操作");
}
}
2.左滑动显示多个按钮
- (nullable NSArray*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *unReadAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"标为未读" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
NSLog(@"标记第%ld行未读", indexPath.row);
_tableView.editing = NO;
}];
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
NSLog(@"删除第%ld行", indexPath.row);
}];
return @[deleteAction, unReadAction];
}
3.已经选中,已经取消
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//当前tableView是编辑状态, 那么选中的行要加入到被编辑数组里
if (tableView.isEditing) {
[self.editedIndexPaths addObject:indexPath];
}
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
//被取消选中时,如果表格是编辑状态,那么从编辑列表中删除
if (tableView.isEditing) {
[self.editedIndexPaths removeObject:indexPath];
}
}
4.编辑类型
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
//默认, 只有是这个属性,才能够左滑动出现多按钮
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
}
#pragma mark - 方法 Methods
- (void)changeSegment:(UISegmentedControl *)sender{
NSLog(@"");
[self.tableView setEditing:sender.selectedSegmentIndex animated:YES];
if (sender.selectedSegmentIndex) {
//编辑状态 == 1
for (NSIndexPath *indexPath in self.editedIndexPaths) {
//通过代码选中cell的某一项, 使用代码调用不会触发协议方法
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}
}
}