iOS13 beta6에서 Context Menus의 사양이 바뀌었습니까?

전제로 다음과 같은 화면 전환을 만들려고합니다.


iOS13에서 소개된 Context Menus을 사용하여 미리보기를 표시합니다.
미리보기를 탭하면 상세 화면으로 이동합니다.

문제



정확하게 조사하지 않았기 때문에 그렇습니다만,
최소한 iOS13 beta6에서 미리보기를 탭해도 세부 화면으로 전환되지 않습니다.

원인



움직이던 당시에는

UITableViewDelegate
func tableView(_ tableView: UITableView, 
willCommitMenuWithAnimator animator: UIContextMenuInteractionCommitAnimating)

미리보기를 탭하면 이것이 호출되었지만,

적어도 iOS13 beta6부터

UITableViewDelegate
func tableView(_ tableView: UITableView, 
willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, 
animator: UIContextMenuInteractionCommitAnimating)

미리보기를 탭하면 여기가 호출됩니다.

Apple의 문서을 보더라도 아무것도 쓰지 않습니다.
오랜만에 보면 쓰여졌습니다.

이 사이트를 보면 iOS13 beta6에서 API가 추가되어 있네요.
iOS13 Beta 5 to Beta6 API Differences

트리비아



미리보기 화면에서 화면 천이하는 처리는 다음과 같습니다.

UITableViewDelegate
func tableView(_ tableView: UITableView, 
willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, 
animator: UIContextMenuInteractionCommitAnimating) {

    animator.addCompletion {
        // 画面遷移する処理
    }
}

위의 처리에 animator.preferredCommitStyle를 추가하면 화면 전환의 동작을 선택할 수 있습니다.
// プレビュー画面から直接画面遷移する。(デフォルト)
animator.preferredCommitStyle = .pop
// 一度元の画面に戻ってから画面遷移する。
animator.preferredCommitStyle = .dismiss

Apple Developer Forum을 보았을 때, iOS13 beta6로부터의 현상인 것 같기 때문에 정정합니다.

iOS13 beta8 + Xcode11 beta6을 기반으로 작성되었습니다.
릴리스 버전에서는 변경될 수 있습니다.

좋은 웹페이지 즐겨찾기