2010-09-23 3 views
1

Обновление: Другое решение этой проблемы было бы, если панель навигации на корневом уровне навигационного контроллера может быть прозрачной или не показана. Есть ли способ сделать панель навигации на корневом уровне контроллера навигации прозрачной или не показана?Храните панель инструментов в верхней части UIView при использовании pushViewController, а затем popViewController?

У меня есть NIB с панелью инструментов в верхней части верхнего уровня UIView, а под панелью инструментов - tableView. Когда я использую pushViewController на navigationController, чтобы нажимать другой UIViewController на navigationController, панель инструментов перезаписывается панелью навигации. Когда я просматриваю текущий вид в корневом представлении, панель инструментов не может быть видна, так как в верхней части находится пустая панель. Теперь есть также пробел между панелью инструментов и верхней частью таблицыView о размере панели инструментов. Таким образом, вид выглядит сверху: 1) заштрихованы пустой бар, 2) пустое пространство размером панели инструментов, 3) TableView

Как сделать панель верхнего уровня NIB появляются на вершина UIView после использования popViewController?

В верхнем зрении уровня I экземпляр 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]; 

Любая идея, как я могу заставить панель верхнего уровня не перегружать itten при возвращении на верхний уровень?

ответ

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]; 
}