В качестве корня моего приложения у меня есть Navigation Controller, и я использую прокси-сервер внешнего вида для настройки внешнего вида на iOS 5, но для iOS 4 я надеялся использовать категорию для переопределения drawRect :, это было нормально, кромечто все панели навигации были затронуты, как и следовало ожидать от категории.
Я не хочу вмешиваться в «системные» всплывающие окна, такие как Mail composer или SMS composer, я хочу, чтобы их панели оставались синими и системными.
IПопытался создать свой собственный UINavigationController с его xib и изменить класс NavigationBar на мой пользовательский подуровень UINavigationBar.Но результаты никак не влияют на экран.
Мне известно о следующем посте, но я не смог заставить работать какие-либо решения, как ожидалось. Как программно создать подкласс UINavigationBar для UINavigationController?
Моя первая попытка, которая работает, но использует недокументированный setNavigationBar: метод:
_myNavigationController = [[UINavigationController alloc] initWithRootViewController:someVC];
if([[BT_NavigationController class] respondsToSelector:@selector(appearance)]){
// some iOS 5 magic in here !
[_myNavigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"topbar.png"];
}else{
// Probably looking at app store refusal
CustomBar * bar = [[CustomBar alloc] init];
// [_myNavigationController setNavigationBar: bar];
[bar release];
}
[parentView presentModalViewController:_myNavigationController animated:YES];
Чтобы избежать создания яUINavigationController, для которого у меня также был xib, переназначая класс панели навигации на мой пользовательский класс, но, помещая точки останова в drawRect: метод, я вижу, что это не вызывается.
Зачем этобыть, кажется, мой код не загружает пера, и поэтому не понимая, панель пера должна быть моим пользовательским классом, а не UINavigationBar.
Любые советы будут полезны, спасибо.