問題は次のとおりです。私は、最終的にテーブル、ビューなどを表示するいくつかのUINavigationControllerに、一連のUIBarButtonItemsを含むNav Barを備えたiOS 9アプリケーション(Swift)ポップオーバーとして。もちろん、これらのボタンの1つをタップしても、ナビゲーションバーの他のUIBarButtonItemが自動的に無効になるわけではなく、ユーザは自由にタップすることができます。ナビゲーションバーでのUIBarButtonItemsの無効化とセカンダリポーカーの停止
Attempt to present UINavigationControllerViewController which is already presenting (null)
ポップオーバーa)は、残りのUIBarButtonItemsを無効にする必要が表示されたら、問題の世話をするために:ポップオーバーはすでにこれはHIGに反しているとも拒否の理由として、我々は次の警告を得るが表示付きb)追加のポップオーバーを表示することを中止する必要がある。
そこでここでは、アクションの最高の原因は何ですか?ポップオーバーのView ControllerのisBeingPresentedフラグは、他のView Controllerのアウトレットを作成できず、navigationControllerのviewControllers配列には外部ナビゲーションコントローラまたはその子孫が含まれていないため、管理ビューコントローラでは使用できません。
私のラメの回避策には、グローバルなappIsPresentingPopover Boolがあります。これは、viewDidLoadではtrueに設定され、上記のView ControllerではviewDidDisappearではfalseに設定されています。その後、Boolは、支配ビューコントローラのprepareForSegueメソッドでテストされ、追加のポップオーバーが表示されなくなります。また、すべてのコンセントを持つ有効なUIBarButtonItemsを無効にすることもできます。醜い!
この一般的なシナリオを処理する標準的な方法は何ですか?
新しいポップオーバーが表示されたときを検出して、もう一方を閉じることはできますか? IMOでは、ボタンを無効にするのではなく、この方法で処理することをお勧めします。ユーザーは、邪魔にならずにポップオーバーを切り替えることができると期待しています。 –
ありがとう、私は完全に同意してUXと1つのUIBarButtonItemsの有効な状態を更新することを避けるでしょう。しかし、上記の警告を避けるために何か他のことを行う前に、既存のポポバを先に閉じることが重要なので、主な問題は残っています。 – caxix