Help us understand the problem. What is going on with this article?

iOS13 beta6でContext Menusの仕様が変わったのかな?

前提として以下のような画面遷移を作ろうとしています。
SS2019-08-23 5.27.03.png

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のドキュメントを見ても何も書いてありません。:disappointed_relieved:

こちらのサイトを見ると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に基づいて記述しています。
リリース版では変更される可能性があります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした