0

標準の「マスター-詳細」ナビゲーションを使用してiPhoneアプリを作成しています。このナビゲーションでは、UITableViewからアイテムを選択し、画面にプッシュするViewControllerでアイテムの詳細ビューを確認します。

ただし、ウィンドウの右側から詳細画面をプッシュする従来のUINavigationControllerとは異なり、詳細画面を画面の上部から下に表示したいと思います。

これを達成するには何が必要ですか?UINavigationControllerをサブクラス化する必要がありますか?(それは良い考えではないと聞きました)。サブクラス化を検討する必要があるクラスは何ですか?

4

1 に答える 1

3

サブクラスUINavigationController化してオーバーライドしますpushViewController:animated:
すぐにスーパーを呼び出さないで、次のようなアニメーションをカスタマイズしますか?

nextViewController.view.transform = CGAffineTransformMakeTranslation(0, -nextViewController.view.frame.size.height);

void(^animationBlock)(void) = ^{
    [super pushViewController:nextViewController animated:NO];
    nextViewController.view.transform = CGAffineTransformIdentity;
};

if (animated) {
    [UIView animateWithDuration:0.3f animations:animationBlock];
}
else{
    animationBlock();
}

アップデート:

実際にはサブクラス化する必要はありませんUINavigationController。VC を通常の にプッシュするたびに、上記のアニメーションを実行することもできますUINavigationController

于 2012-12-28T21:37:13.917 に答える