Проблемы с изменением фона UINavigationBar при представлении модального контроллера представления - PullRequest
0 голосов
/ 10 марта 2012

Я использую этот метод для изменения фона моих контроллеров uiview. Обычно это работает, когда я нажимаю контроллер представления.

Однако, если viewcontroller представлен с использованием

[self presentModalViewController:customViewController animated:YES];

тогда этот код не работает. Может кто-нибудь любезно предложить, что не так?

Используемый код:

Чтобы иметь изображение на панели навигации, вы должны нарисовать его самостоятельно, что на самом деле не так сложно. Сохраните это как UINavigationBar + CustomBackground.m (добавляет пользовательскую категорию в UINavigationBar):

@implementation UINavigationBar (CustomBackground)

- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed:@"NavMain.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

Ответы [ 5 ]

2 голосов
/ 10 марта 2012

Если вы работаете на iOS 5, то drawRect: больше не называется

Вам нужно будет либо использовать UIAppearance, либо подкласс UINavigationController и использовать его для изменения своего изображения.

Учебник для UIAppearance можно найти здесь

(drawRect: будет по-прежнему работать на версиях ниже iOS 5)

0 голосов
/ 20 марта 2012

Метод, которым вы должны установить изображение панели навигации в контроллере навигации.

Но новый контроллер представления, который вы представляете, не использует метод навигации.Вместо этого вы используете Modal view Controller.

У меня есть два решения для вас:

--- 1 -----

все еще используете Modal View Controller, просто добавьтеэто изображение в верхней части нового контроллера вида.

[self.view addSubview:theImage];

---- 2 -----

используйте

[self.navigationController pushViewController:customViewController animated:YES];

вместо

[self presentModalViewController:customViewController animated:YES];   

В этом случае вы используете навигацию.

Я предложу второй вариант.

0 голосов
/ 15 марта 2012

Вы должны создать контроллер навигации, установить корневой контроллер и представить его.

например,

UIViewController * vc = [[UIViewController alloc] init];

UINavigationController * cntrol = [[UINavigationController alloc] initWithRootViewController: vc];

[self presentModalViewController: cntrol animated: YES];

0 голосов
/ 13 марта 2012

Попробуйте,

UIColor *image = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"imagename.png"]];

замените имя изображения.

0 голосов
/ 13 марта 2012

не уверен, что это так, но вы пробовали

[self presentViewController:customViewController animated:YES completion:NULL]

И установить какой-либо modalViewStyle, который вы считаете подходящим для customViewController? В соответствии с документацией iOS , presentModalViewController устарел, поэтому вам, возможно, повезет больше, если использовать приведенный выше вызов сообщения (тем более что эта проблема возникает только с контроллерами модального представления)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...