UITable编辑二

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];

}

}

}

你可能感兴趣的:(UITable编辑二)