[iOS] Context Menu

RudinP·2025년 5월 19일
0

Study

목록 보기
272/273

셀을 길게 누를 시, 팝업되는 창을 Context Menu라고 한다.

  • Preview: 위쪽에 있는 뷰
  • Action: 아래쪽의 액션

스와이프 액션을 추가해준 경우, context menu도 추가해주는 것이 좋다.


액션 구현 패턴

  1. 액션 만들기
  2. configuration 객체에 담기
  3. 리턴
override func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
	var children = [UIAction]()
    
    let renameAction = UIAction(title: "이름바꾸기", image: UIImage(systemName: "square.and.pencil")) { _ in
    	~액션 실행 내용~
    }
    children.append(renameAction)
    
    ...
    
    return UIContextMenuConfiguration { elements in
    	UIMenu(children: children)
    }
}


프리뷰 구현 패턴

  1. 프리뷰로 쓸 뷰 컨트롤러 생성
  2. UIContextMenuConfiguration 생성자의 previewProvider 속성으로 전달
...
if target.type == .file && isImage {
	return UIContextMenuConfiguration {
    	let storyboard = UIStoryboard(name: "Main", bundle: nil)
        guard let vc = storyboard.instantiateViewController(withIdentifier: String(describing: ImagePreviewViewController.self)) as? ImagePreviewController else { 
        	return nil
        }
        
        if let data = try? Data(contentsOf: target.url) {
        	vc.image = UIImage(data: data)
        }
        
        return vc
    } actionProvider: { elements in
    	UIMenu(children: children)
    }
}

profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글