12

ユニバーサル ストーリーボードを使用するようにアプリを更新しています。インターフェイスビルダーを使用して、ボタンから新しいビューコントローラーにドラッグし、セグエの種類として「ポップオーバーとして表示」を選択して、新しいビューコントローラーへのポップオーバーセグエを作成しました。

ユーザーがポップオーバーの外側を押したとき (閉じたとき)、表示中のビュー コントローラーで通知を受けて、アクションを元に戻すことができるようにする必要があります。これどうやってするの?

通常、ポップオーバーを手動で作成し、ViewController をポップオーバーのデリゲートにしました。popoverControllerDidDismissPopover デリゲート コールバックを使用できるようにします。ただし、これは iOS9 で廃止されました。そうでなかったとしても、ポップオーバーの場所がわからないので、ビュー コントローラーにデリゲートを設定できます。

4

4 に答える 4

13

どのメソッドが非推奨であると言及しているのかはわかりませんが、UIPopoverPresentationControllerDelegateこれを実現するために引き続き を使用できます。何かのようなもの:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "popoverSegue" {
        let vc = segue.destinationViewController
        sortVC.modalPresentationStyle = .Popover
        sortVC.popoverPresentationController?.sourceRect = filterButton.bounds
        sortVC.preferredContentSize = CGSizeMake(216, 150)
        sortVC.popoverPresentationController!.delegate = self
    }
}

そして、

func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController)

その解雇を処理する方法。

于 2015-11-02T00:02:17.557 に答える
1

Beto が指摘するように、UIPopoverPresentationControllerDelegate継承元にはandUIAdaptivePresentationControllerDelegateが含まれています。presentationControllerShouldDismisspresentationControllerDidDismiss

これらの関数のポップオーバー バージョンにあったコードをバージョンに移動しただけで、UIAdaptivePresentationControllerDelegate以前とまったく同じように機能します。

ビュー コントローラーまたはセットのデリゲート宣言を変更する必要はありませんでしたisModalInPresentation

元のコードは 13.2.3 でも機能していましたが、これらの機能は減価償却されており、いつか機能しなくなるのでしょうか?

私のアプリは、プレゼンテーション シートやカード スタイルではなく、ポップオーバーを使用する iPad アプリです。

于 2019-12-01T05:21:39.433 に答える