1

更新:此问题的另一个解决方案是导航控制器根级别的导航栏是否可以透明或不显示。有没有办法使导航控制器根级别的导航栏透明或不显示?

我的顶级 UIView 顶部有一个带有工具栏的 NIB,工具栏下方是一个 tableView。当我在 navigationController 上使用 pushViewController 将另一个 UIViewController 推送到 navigationController 上时,工具栏被导航栏覆盖。当我将当前视图弹出回根视图时,无法看到工具栏,因为顶部有一个空白栏。现在,工具栏和 tableView 顶部之间也有大约工具栏大小的间隙。所以视图从顶部看起来像:1)阴影空白栏,2)大约工具栏大小的空白,3)tableview

使用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 回答