UIView が完全に非表示になったことを知るにはどうすればよいですか?
-
21-09-2019 - |
質問
私は 非表示を切り替えて 2 つのビューを切り替える 属性。1 つのビューがいつ非表示になったり表示されたりするかをどうやって知ることができますか?
viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisamper、viewDidDisapear、becomeFirstResponder、resignFirstResponderにブレークポイントを設定しようとしました。何もない。hidden = YES/NO に設定すると、これらはどれも呼び出されません。
if (self.aController)
self.aController.view.hidden = YES;
if (self.bController)
self.bController.view.hidden = NO;
[self.bController viewWillAppear:YES];
そのビューは...であるため、私は自分で viewWillAppear を呼び出します。UITabBarItem の下のビューのサブビューのサブビュー。Apple のドキュメントには、セットアップが不自然であると記載されており、 一部の自動通知は手動で行う必要があります. 。これは、非表示ステータスに関連すると思われる becomeFirstResponder と ResignFirstResponder が取得できないことと同じ問題ですか?
解決 2
アップルのドキュメントが正しかったと思う - あるいは少なくともの問題を解決するための一つの方法を提供しました。私は、サブビューで自動通知を得ることはありませんが、私はMAINVIEWでそれらを取得いたしますので、私はちょうど「前進」自分で通知ます:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// called at tab switch
if (self.aController)
[self.aController viewWillAppear:YES];
if (self.bController)
[self.bController viewWillAppear:YES];
}
- (void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// called at tab switch
if (self.aController)
[self.aController viewWillDisappear:YES];
if (self.bController)
[self.bController viewWillDisappear:YES];
}
わからない、これは「正しい」方法ですが、それが動作するかどうか。次の問題は、してください!
他のヒント
1つのオプションは、キー値の観測を使用することですのいずれかのビューのhidden
特性を観察しました。変更がトリガされると、その変更についてのメッセージが表示されます。