viewWillAppear
ビューに移動するときと、他のビューからビューに戻るときの両方で呼び出されます。
他のビューから戻ったときだけ、セルを選択 (ハイライト) してフェードアウトしたい。
これを行うデリゲートメソッドはありますか?
UINavigationViewController を使用しています。
iOS 5 を使用している場合は、次の新しいプロパティを使用できます。
これらの 4 つのメソッドをビュー コントローラーの外観コールバックで使用して、子ビュー コントローラーとして表示、非表示、または追加または削除されているかどうかを判断できます。たとえば、View Controller は、viewWillDisappear: メソッドで式 ([self isDismissing] || [self isMovingFromParentViewController]) を確認することで、閉じられたかポップされたために消えているかどうかを確認できます。
- (BOOL)isBeingPresented __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); - (BOOL)isBeingDismissed __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); - (BOOL)isMovingToParentViewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); - (BOOL)isMovingFromParentViewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
あなたのコードで:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!(self.isMovingToParentViewController || self.isBeingPresented))
{
// animate
}
}
編集:
を使用している場合はUITableViewController
、プロパティ-clearsSelectionOnViewWillAppear
をに設定するYES
と、これが行われます。サブビューでレギュラーUIViewController
を使用している場合にのみ、手動で行う必要があります。UITableView
ビューが表示されたときにviewWillAppearが呼び出されています
viewWillAppear を次のように変更できます
- (void) viewWillAppear:(BOOL)animated
{
static BOOL firstTime = YES;
if (!firstTime)
{
//Do your alpha animation
}
firstTime = NO;
}
iOS 5 をターゲットにしている場合は、 と を使用[self isBeingPresented]
し[self isBeingDismissed]
て、ビュー コントローラーが追加されているか、ナビゲーション コントローラーから削除されているかを判断できます。
また、ビュー コントローラーの出入りに関係なく、テーブル ビューでセルを選択/選択解除するときのロジックを改善できるのではないかと考えています。
これを行う通常の方法は次のとおりです。誰かがビュー コントローラー A のテーブル ビューで行を選択すると、その行が選択/強調表示され、新しいビュー コントローラー B をプッシュします。ビュー コントローラー B が閉じられると、ビュー コントローラ A のテーブル ビュー行viewDidAppear
(ユーザーがフェード アウトするのを確認できるようにするため)。適切なケース。
UINav コントローラーでは、「lastView」プロパティを作成し、各ビュー コントローラー (UINav コントローラーによって制御される) でこのプロパティを「viewWillAppear」に設定することができます...ターゲット ビューで...必要なものハイライトとフェードを実行して、UINav コントローラーのこのプロパティをチェックし、それが NIL かどうかを確認します。
それはそれを行うための1つの方法です。モーダルなどをポップアップすると、これは機能しません。