UICollectionViewCell의 편집 메뉴 표시
하고 싶은 일
임의의 UICollectionViewCell이 길게 탭되었을 때에 임의의 편집 메뉴를 표시한다.
이런 느낌↓
 
 환경
위 환경 이외에서는 시도하지 않았지만 아마 iOS6.0 이상이라면 작동한다고 생각합니다.
방법
UICollectionViewCell의 편집 메뉴를 표시하려면 먼저 다음 세 가지 대리자 메서드를 구현해야 합니다.
게다가 각 메소드내에서 편집 메뉴 표시에 관한 세세한 지정을 실시하는 처리를 기술할 필요가 있습니다.
순서대로 설명하겠습니다.
1. collectionView:shouldShowMenuForItemAtIndexPath:
편집 메뉴를 표시하는 셀을 BOOL 값을 반환하여 지정합니다. 이 메서드에서 NO가 반환된 IndexPath 셀에 대해서는 편집 메뉴가 표시되지 않습니다.
- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if ( indexPath.row < 3 ) {
        return YES;
    }
    return NO;
}
이 경우 처음 3개의 셀(0~2)만 편집 메뉴가 표시됩니다.
2. collectionView:canPerformAction:forItemAtIndexPath:withSender:
표시할 편집 메뉴를 BOOL 값을 반환하여 지정합니다. 편집 메뉴의 종류와 셀렉터로서 건네받는 액션 메소드는 다음과 같습니다.
메뉴
액션 메소드
컷
cut:
복사
copy:
붙여넣기
paste:
- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(nonnull SEL)action forItemAtIndexPath:(nonnull NSIndexPath *)indexPath withSender:(nullable id)sender
{
    if ( [NSStringFromSelector(action) isEqualToString:@"copy:"]
        || [NSStringFromSelector(action) isEqualToString:@"paste:"] ) {
        return YES;
    }
    return NO;
}
이 경우 복사 및 붙여넣기만 편집 메뉴로 표시됩니다.
3. collectionView:performAction:forItemAtIndexPath:withSender:
마지막으로 편집 메뉴가 탭될 때의 동작을 설명합니다.
- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
{
    if ( [NSStringFromSelector(action) isEqualToString:@"copy:"] ) {
        // なんかする
    } else if ( [NSStringFromSelector(action) isEqualToString:@"paste:"] ) {
        // なんかする
    }
}
상기의 코드에서는 하고 있지 않습니다만, 인수로서 (당연합니다만) 셀의 indexPath가 건네지기 때문에, 그것을 바탕으로 무언가 처리를 기술하게 된다고 생각합니다.
요약
collectionView : shouldShowMenuForItemAtIndexPath : 메소드를 구현하고 편집 메뉴를 표시 할 셀을 지정합니다.
collectionView : canPerformAction : forItemAtIndexPath : withSender : 메소드에 표시 할 편집 메뉴의 내용 (컷/복사/붙여 넣기 중 하나)을 지정합니다
collectionView : performAction : forItemAtIndexPath : withSender : 메소드를 사용하여 편집 메뉴를 탭할 때 처리를 설명합니다
이번에는 기본 UICollectionViewCell을 그대로 사용하고 있습니다만, 자작 Cell 클래스를 사용해도 같은 방법으로 편집 메뉴 표시를 실현할 수 있습니다.
참고문헌
이번 기사를 쓰기에 즈음해, Apple의 공식 다큐멘드인 「Collection View Programming Guide for iOS」의 「Showing the Edit Menu for a Cell」의 항목을 참조했습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(UICollectionViewCell의 편집 메뉴 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/kagemiku/items/00020094ae0e0e6af824
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(UICollectionViewCell의 편집 메뉴 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kagemiku/items/00020094ae0e0e6af824텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)