如何设置 UITableViewRowAction 的动作
How to set the action of UITableViewRowAction
我自定义了 UITableCellDeleteConfirmationView 以更改 iOS 8 及更高版本中按钮的背景颜色。 Following this post,我实现了 editActionsForRowAtIndexPath
、commitEditingStyle
和 canEditRowAtIndexPath
。
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
RankedSpecies* rankedSpecies = [fetchedResultsController objectAtIndexPath:indexPath];
if ( [self.collectedLeaf.selectedSpecies isEqualToString:[rankedSpecies.Species commonNameFirstLast]] )
{
UITableViewRowAction *unlabelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"UnLabel" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"Action to perform with Button 1");
}];
unlabelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[unlabelSpecies];
}
UITableViewRowAction *labelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Label" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"Action to perform with Button 1");
}];
labelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[labelSpecies];
}
但是,当我按下这些自定义按钮时,它们不会调用 commitEditingStyle
。 According to this post、commitEditingStyle
仅在您触摸删除按钮时触发。
我没有试图弄清楚如何触发 commitEditingStyle
,而是创建了复制我的 commitEditingStyle
实现 removeCollectedLeafLabel
的方法。 class 方法可以是一个动作吗?如何设置 UITableViewRowAction 在按下时执行某些操作?
当您按下按钮时,它会调用该块。
UITableViewRowAction *unlabelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"UnLabel" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
CALL_YOUR_METHOD_FROM_HERE
}];
unlabelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[unlabelSpecies];
我自定义了 UITableCellDeleteConfirmationView 以更改 iOS 8 及更高版本中按钮的背景颜色。 Following this post,我实现了 editActionsForRowAtIndexPath
、commitEditingStyle
和 canEditRowAtIndexPath
。
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
RankedSpecies* rankedSpecies = [fetchedResultsController objectAtIndexPath:indexPath];
if ( [self.collectedLeaf.selectedSpecies isEqualToString:[rankedSpecies.Species commonNameFirstLast]] )
{
UITableViewRowAction *unlabelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"UnLabel" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"Action to perform with Button 1");
}];
unlabelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[unlabelSpecies];
}
UITableViewRowAction *labelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Label" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"Action to perform with Button 1");
}];
labelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[labelSpecies];
}
但是,当我按下这些自定义按钮时,它们不会调用 commitEditingStyle
。 According to this post、commitEditingStyle
仅在您触摸删除按钮时触发。
我没有试图弄清楚如何触发 commitEditingStyle
,而是创建了复制我的 commitEditingStyle
实现 removeCollectedLeafLabel
的方法。 class 方法可以是一个动作吗?如何设置 UITableViewRowAction 在按下时执行某些操作?
当您按下按钮时,它会调用该块。
UITableViewRowAction *unlabelSpecies = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"UnLabel" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
CALL_YOUR_METHOD_FROM_HERE
}];
unlabelSpecies.backgroundColor = [UIColor darkGrayColor];
return @[unlabelSpecies];