Пользовательская панель навигации для «Больше» View Controller в UITabBarController - PullRequest
0 голосов
/ 23 марта 2012

С кодом ниже (для более низких версий iOS) я делю подклассы UINavigationBar и применяю к каждой панели навигации (каждого контроллера навигации) в моем UITabBarController.

@implementation CustomNavigationBar

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

@end

Код отлично работает для визуально доступных контроллеров представления, но при нажатии на вкладку «Дополнительно» для доступа к другим контроллерам представления пользовательское изображение больше не отображается.Я что-то пропустил?

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Способ, которым я настраиваю More View Controller, состоит в том, чтобы гарантировать, что вы не получите дополнительный контроллер по умолчанию от самого UITabBarController - это то, что звучит так, как вы испытываете.

1 Создайте свой собственный контроллер Подробнее. У него будет свой собственный значок

//MyMoreViewController.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = NSLocalizedString(@"More", @"More");
        self.tabBarItem.image = [UIImage imageNamed:@"MyCustomMoreImage"];
    }
    return self;
}

, а затем

2 Когда вы инициализируете свой UITabBarController, убедитесь, что вы отправили пять ровно контроллеров представления в инициализатор И что ваш пользовательский дополнительный контроллер представления является корневым контроллером представления 5-го элемента - т.е. обычно вы используете навигацию контроллер с вашим контроллером представления больше установленным на его rootViewController.

1 голос
/ 09 ноября 2013

Вы можете использовать свойство moreViewController вашего tabBarController, чтобы получить больше контроллера навигации (я использовал это в приложении iOS7)

    UINavigationController *moreViewController = tabController.moreNavigationController;
    if(moreViewController)
    {
        [moreViewController.navigationBar setBarTintColor: [UIColor yellowColor]];
        [moreViewController.navigationBar setTintColor: [UIColor whiteColor]];
    }
1 голос
/ 23 марта 2012

UITabBarController создаст UINavigationController для элемента More, поэтому его UINavigationBar будет не экземпляром вашего класса, а UINavigationBar.

Вы можете взглянуть на API внешнего вида iOS 5, чтобы изменить его внешний вид.

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