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.)
Reference
이 문제에 관하여(UICollectionViewCell의 편집 메뉴 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kagemiku/items/00020094ae0e0e6af824텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)