2016-06-28 4 views
3

Apple의 사진 앱과 비슷하게 이미지 컬렉션 뷰에서 peek 및 pop을 사용하고 있습니다. 셀을 들여다 보면 ImageView에 해당 이미지 만 보여주는 PhotoViewController에 이미지가 표시됩니다. Apple은 복사, 공유, 즐겨 찾기, 삭제의 4 가지 미리보기 작업을 제공합니다. 사용자가 '삭제'를 누르면 미리보기 작업이 다음으로 업데이트됩니다. 삭제 및 취소. 엿봄 심상은 아직도 보여준다.iOS CollectionView에서 이미지에 대한 UIPreviewActions의 '삭제'를 확인하는 방법

내 자신의 코드에서 미리보기 작업을 설정하고 사진을 삭제할 수 있지만 삭제가 발생하기 전에이를 확인할 수는 없습니다. 또한 삭제 또는 취소의 새로운 미리보기 작업으로 픽뷰 뷰를 열어 두거나 다시 열 수있는 방법을 알아낼 수 없습니다.

질문 : 사용자가 삭제되기 전에이를 확인하도록하려면 어떻게해야합니까?

UIPreviewAction 내부에 UIAlertController를 넣으려고했으나 경고 메시지가 나타납니다. "보기를 창 계층 구조에 표시하려고 시도하지 않았습니다!" alertWindow를 사용하여 keyWindow를 사용하는 것과 같은 몇 가지 대안을 시도했지만 빠르게 작동하지는 못했습니다. 나는 컬렉션보기에 또 다른 알림을 설정할 수 있다고 가정하여 peek이 'Delete'로 닫을 때 사용자에게 삭제 확인을 묻는 경고 컨트롤러가 나타나지만 그 단계에서는 이미지가 더 이상 나타나지 않습니다.

제안 사항? 지금까지 내가 사용해 왔던 대안들이있다.

UIPreviewAction *delete = [UIPreviewAction actionWithTitle:@"Delete" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) 
    { 

//create alertController 
... 

// 1. present alertController: 
[self presentViewController:alertController animated:YES completion:nil]; 

// 2. Alternatively tried to present alertController using keyWindow   
UIViewController *top = [UIApplication sharedApplication].keyWindow.rootViewController; 
[top presentViewController:alertController animated:YES completion: nil]; 

//3. notify the presenting view controller that the user has deleted the image and set up an alert to occur after the peek view closes. 

[[NSNotificationCenter defaultCenter] postNotificationName:@"deleteAlert" object:nil]; 
} 

답변

0

나는 그것이 오래된 질문이라는 것을 알고 있지만 해결책은 매우 쉽습니다. 그래서 여기에 게시하십시오!

스위프트 3

 let closeTabAction = UIPreviewAction(title: "Close Tab", style: .destructive, handler: { (action, viewController) in 
      //this is confirmation action 
     }) 

     let closeTabCancelAction = UIPreviewAction(title: "Cancel", style: .default, handler: { (action, viewController) in 
      //cancel action, don't need anything here 
     }) 


     //UIPreviewActionGroup, this is the main action 
     let closeTabGroup = UIPreviewActionGroup(title: "Close Tab", style: .destructive, actions: [closeTabAction, closeTabCancelAction]) 

     return [closeTabGroup] 

기본적으로, 당신은 하위 메뉴를 만들 수 UIPreviewActionGroup를 사용해야합니다. Apple Docs