アプリに実装しようとしているボタンで奇妙な動作が発生しています。アプリのキー ウィンドウに追加する「投稿を作成」ボタンがあります。ボタンを作成して、ナビゲーション コントローラーが新しいビュー コントローラーをプッシュしたとき (つまり、投稿をクリックしたとき) など、特定のシナリオで非表示にしたいと考えています。アプリは次のように設定されています。
Main
は、4 つのタブを持つタイプのカスタム UITabController であるストーリーボードでありMainTabViewController
、それぞれが タイプ のコンテナーを持つ UINavigationController ですBaseViewController
。
のviewDidLoad
関数でMainTabViewController
、作成ボタンを作成し、次のようにサブビューとしてキー ウィンドウに追加します。
func createButton(){
let keyWindow = UIApplication.shared.keyWindow
postButtonContainer = FanMenu...
keyWindow?.addSubview(postButtonContainer)
}
そして、BaseViewController
私viewWillDisappear
は作成ボタンを非表示にし (つまり、投稿がクリックされたとき)、true または false にviewWillAppear
設定して作成ボタンを表示します。isHidden
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
ComposeButtonManager.shared.hidePostButton()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
ComposeButtonManager.shared.showPostButton()
}
この問題は、Xcode から起動した後にアプリをクラッシュして閉じた後にのみ発生します。何が起こっているのかというと、クラッシュを閉じた後に再度開くと、アプリは正常に読み込まれ、作成ボタンが表示されますが、タブから移動して同じタブに戻ると、作成ボタンが表示されません。投稿をクリックしてBaseViewController
サブクラスに戻ると、ボタンが再表示されます。ビューが表示されるときにすべての UIViewControllers がボタンを再表示するように呼び出すときに、タブバーが切り替わった後にボタンが非表示になる理由がわかりません。
携帯電話で Xcode からプロジェクトを実行すると、タブを切り替えることができ、ボタンが消えません。なぜこれが起こっているのかわかりません。