zoukankan      html  css  js  c++  java
  • iOS 长按TableViewCell加长按快捷菜单

    tableviewcell 长按出现的快捷菜单这个功能估计大家在项目中用到的比较少

    首先我们来看一下效果图,长按cell4后出现效果。

    实现这个功能只需要动用三个方法,都是tableview本身有的

    第一个方法

    -(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath

    {//允许Menu菜单出现

        return   YES;

    }

     

    第二个方法

    -(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

    {   

         return YES;  // 表示全部的cell都可以显示menu菜单

       //显示 cut,copy,paste

       if (action == @selector(cut:)){   

              return YES;  

         }  else if(action == @selector(copy:)){      

             return YES;    

         } else if(action == @selector(paste:)){   

             return YES;    

         } else if(action == @selector(select:)){     

           return NO;    

         } else if(action == @selector(selectAll:)){      

           return NO;    

       }  else  {     

           return [super canPerformAction:action withSender:sender];    

      }

    }

     

    第三个方法

    -(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

     if (action == @selector(copy:)) {

            [UIPasteboard generalPasteboard].string = [DataArray objectAtIndex:indexPath.row];

        }else if (action == @selector(cut:)){

            [UIPasteboard generalPasteboard].string = [DataArray objectAtIndex:indexPath.row];

            [DataArray replaceObjectAtIndex:indexPath.row withObject:@"已剪切"];//被剪切的一行所用的字符串来代替,可以为空串,不能为nil

            [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

        }else if (action == @selector(paste:)){

            NSString *pasteString = [UIPasteboard generalPasteboard].string;

            NSString *temString = [NSString stringWithFormat:@"%@%@",[DataArray objectAtIndex:indexPath.row],pasteString];

            [DataArray replaceObjectAtIndex:indexPath.row withObject:temString];

            [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

        }

    }

    三个方法就可以实现上述功能了,动手试试吧!

     

  • 相关阅读:
    左式堆
    winsock库
    二叉堆
    关键字explicit
    HDOJ 1012
    HDOJ 1013
    STL priority实例
    二项队列
    ASP.NET Session过期问题揭秘
    RenderControl (asp.net)
  • 原文地址:https://www.cnblogs.com/billy-chou/p/3941867.html
Copyright © 2011-2022 走看看