Как подключить пользовательский UINavigationBar к UINavigationController - PullRequest
1 голос
/ 05 сентября 2011

Итак, я исследовал, как получить изображение в UINavigationBar, и самый безопасный способ сделать это, работающий для iOS 4 и iOS 5, - это создать подкласс UBavigationBar, поэтому у меня было:

@interface CustomNavigationBar : UINavigationBar
@end

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

Теперь скажите, что я хотел подключить ProfileViewController, чтобы иметь эту пользовательскую панель UINavigationBar, как мне это сделать?Вот как я устанавливаю ProfileViewController.

 ProfileViewController *profile = [[ProfileViewController alloc] init];

    localNavigationController = [[UINavigationController alloc] initWithRootViewController:profile];
    [localControllersArray addObject:localNavigationController];

    [localNavigationController release];
    [profile release];

Есть идеи, как подключить это?Я читал, что это нужно сделать через IB, изменив класс моего UINavigationBar на класс, который я только что создал.Однако в моем xib-файле нет UINavigationBar, так как он создается программно через UINavigationController.

Еще одна проблема заключается в том, что если я хочу иметь динамическое изображение, которое я могу изменить / указать дляUINavigationBar, как мне это сделать?На данный момент жестко установлено, что на UINavigationbar будет изображение myNavBarImage, но что если я захочу установить его на что-то другое, чтобы мне не нужно было создавать 10 пользовательских UINavigationBar, я каким-то образом хотел установить имя изображения.

1 Ответ

1 голос
/ 05 сентября 2011

Существует решение, подобное вашему, но использующее категории вместо подклассов: http://www.developers -life.com / custom-uinavigationbar-with-image-and-back-button.html

Однако у вас есть другие варианты, которые облегчат вам задачу, например, добавление изображения в качестве подпредставления в UINavigationBar.Это безопасный способ сделать это, и я использовал его в предыдущем утвержденном проекте.

Мой любимый способ сделать это - скрыть панель навигации и добавить imageView с кнопками, чтобы иметь полный контроль над тем, какпанель навигации выглядит так (особенно я ее использую, когда мне нужно добавить пользовательские кнопки).

Редактировать (код для использования во втором выпуске):

At viewDidLoad

UIImageView *imageview = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"image1.png"]];
[self.navigationController.navigationBar addSubview:imageview];

[self.navigationController.navigationBar sendSubviewToBack:imageview];
[imageview release];

В методе, который изменяет изображение:

    -(void) changeNavigationBarImage: (NSString *) imageName{
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:[UIImageView class]])
        {
            [(UIImageView *)view setImage:[UIImage imageNamed:imageName]];
            break;
        }
    }
}

Вы можете вызвать этот метод, когда хотите изменить изображение (то есть кнопка или таймер)

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