投稿

1月, 2020の投稿を表示しています

productViewControllerDidFinishはiOS13で挙動がちょっと違う。

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) { viewController.dismiss(animated: true, completion: nil) } というメソッドはiOS13で挙動がすこし変わっていた。上の書き方が一般的でこの書き方をしていれば問題ないと思われる。animatedやcompletionは状況に応じた値にすればいい。 ただ、次のような状況で別の記述になっていたらiOS13でおかしくなった。 dismissを「(自分の上に)表示しているViewControllerを消す」という意味ととらえた場合、つまりdismissを実行したViewControllerが消えるのではなく、子ViewControllerが消えるという解釈をした場合、 AがBを表示している状況で、Aがdelegateになっていれば、Bを消すときに func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) { dismiss(animated: true, completion: nil) } という書き方になる。 しかしこの書き方ではiOS13ではA自身も消えてしまう。 dismissは子を消すという解釈は間違っていない気がするが。 dismissの挙動で何か情報を知っている人は教えていただきたい。dismissは自分が閉じるのか子が閉じるのか。