UINavigationController の navigationItem から起動されたポップオーバーを閉じるのに問題があります。UINavigationController によって挿入されたナビゲーション アイテムは、UIPopoverController の却下をトリガーしないようです。通常、ポップオーバーの外側をタップすると、ポップオーバーは消えます。ただし、ナビゲーション項目をタップしても、ポップオーバーは消えません。さらに悪いことに、ポップオーバーをトリガーするボタンをタップすると、ポップオーバーの 2 番目のインスタンスが表示されます。
これはすべて、ストーリーボードを使用して行われます。- UIBarButtonItem を navigationItem に入れます (左または右は、ナビゲーション スタックの初期ビューには関係ありません)。- 別のビューを定義し、セグエを UIBarButtonItem からこのビューにドラッグします。- セグエをポップオーバーに設定します。
ポップオーバーが開いたら、navigationItem をタップしても閉じることができません。これが「設計どおりに機能する」とは信じられないので、何かを逃したのではないかと思います。
私の目標はプログラミングをできるだけ少なくすることですが (それがストーリーボードの目的ですよね?)、回避策を考えました。ナビゲーションアイテムのタップを検出したときのポップオーバー。残念ながら、navigationItem は UIVIew ではないようで、addGestureRecognizer: メソッドがありません...
編集: UITapGesturerecognizer を self.navigationController.navigationBar に追加することは可能ですが、navigationBar の UIBarButtonItems に到達するためのタップを防ぎます。はい、期待できました。
助けてくれてありがとう、のび