0

UIViewController内に2つのがありUINavigationControllerます。最上位はにhidesBottomBarWhenPushed設定されていYESます。一番上を押すと、UIViewController本来UITableViewあるべき位置から約20px上に押し出されます(押し出されたView Controllerの一番上とセルのセルの高さの違いに注意してください)。

UIViewControllerをプッシュし、UIToolBarを非表示にします

以下のスクリーンショットのセル位置と比較してください。

プッシュされたUIViewController、非表示のUIToolBar

さらに、一番上をポップすると、UIViewController本来UITableViewあるべき位置から約20px下にプッシュされます(上の余分な濃い青色のスペースに注意してくださいUITableView)。

ここに画像の説明を入力してください

-[UIViewController setHidesBottomBarWhenPushed:YES]呼び出しを-[UIViewController loadView]、、、-[UIViewController viewWillAppear:]に移動してみました-[UIViewController viewDidAppear:]UIViewControllerはすでにプッシュされているため、これらのコールバックはすべて遅すぎます。したがって、UIToolbarは非表示になりません。

これらのギャップを回避する方法はありますか?-[UINavigationController setToolbarHidden:YES animated:NO]現在、一番上UIViewController-[UIViewController viewDidAppear:]-[UINavigationController setToolbarHidden:NO animated:NO]一番下UIViewControllerのを呼び出してい-[UIViewController viewDidAppear:]ます。これは理想的とは言えません。

4

1 に答える 1

0

AがBをプッシュするとしましょう。あなたの説明から、B は、提示されたものにツールバーがあることを知る必要がないように思えます。むしろ、A が B を押すと、A は B が A のツールバーを持つべきではないことを認識します。では、B を初期化するときに設定しないのはなぜですか?

BController *b = [[BController alloc] init];
b.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:b animated:YES];

または、B がこの動作を制御する必要があると思われる場合は、B のinitメソッドに入れることができます。

于 2013-01-24T02:13:56.133 に答える