1

更新:この問題の別の解決策は、ナビゲーションコントローラーのルートレベルにあるナビゲーションバーが透明であるか、表示されない場合です。ナビゲーションコントローラーのルートレベルにあるナビゲーションバーを透明にする方法や表示しない方法はありますか?

トップレベルのUIViewの上部にツールバーがあり、ツールバーの下にtableViewがあるNIBがあります。NavigationControllerでpushViewControllerを使用して別のUIViewControllerをnavigationControllerにプッシュすると、ツールバーがナビゲーションバーによって上書きされます。現在のビューをルートビューに戻すと、上部に空白のバーがあるため、ツールバーが表示されません。ツールバーとtableViewの上部の間にも、ツールバーのサイズについてのギャップがあります。したがって、ビューは上から見ると次のようになります。1)影付きの空白のバー、2)ツールバーとほぼ同じサイズの空白、3)テーブルビュー

popViewControllerを使用した後、トップレベルのNIBのツールバーをUIViewの上部に表示するにはどうすればよいですか?

トップレベルビューで、UINavigationControllerをインスタンス化します。

 self.navigationController = [[UINavigationController alloc] initWithRootViewController:ListsController];

次に、didSelectRowAtIndexPathでビューコントローラをプッシュします

ItemsController * Items  = [[ItemsController alloc] 
                                         initWithNibName:@"Items" bundle:nil] ;
[self.navigationController pushViewController:Items animated:YES];

最初にプッシュされたビューを表示するには、次のようにします。

UIView *navView = self.navigationController.view;
CGRect navFrame = navView.frame;
//  navFrame.origin.y -= 20;
navView.frame = navFrame;

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIWindow *appWindow = appDelegate.window;


[appWindow addSubview:navView];

トップレベルに戻ったときにトップレベルのツールバーが上書きされないようにするにはどうすればよいですか?

4

1 に答える 1

1

解決策は、次を使用してルート レベルでナビゲーション バーを非表示にすることです。

- (void)viewWillAppear:(BOOL)animated {
[[self navigationController] setNavigationBarHidden:YES animated:YES];

[super viewWillAppear:animated];
[self.table reloadData];
}

次に、ナビゲーション スタックの次の下位レベルで、ナビゲーション バーを非表示にします。

- (void)viewWillAppear:(BOOL)animated {
[[self navigationController] setNavigationBarHidden:NO animated:YES];

[super viewWillAppear:animated];
[self.table reloadData];
}
于 2010-09-25T22:40:50.180 に答える