2015-06-06 2 views
1

У меня есть контроллер вида, у которого нет NavigationController (и не может). Я определяю навигационную панель следующим образом.Изменение UINavigationBar позже в View Viewer

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 41)]; 

    navBar.backgroundColor = UIColorFromRGB(0x72CE97); 
    navBar.barTintColor = UIColorFromRGB(0x72CE97); 

    //Keep the container for Navigation Items 
    UINavigationItem *navItem = [[UINavigationItem alloc] init]; 
    UIImage* logoImage = [UIImage imageNamed:@"nav_logo_small.png"]; 
    navItem.titleView = [[UIImageView alloc] initWithImage:logoImage]; 

    //Add the left button as an Item to Navigation Items 

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButton:)]; 
    navItem.leftBarButtonItem = leftButton; 

    //Add Navigation Items Container to Navigation Bar 
    navBar.items = @[ navItem ]; 

    //Display the Navigation Bar 
    [self.view addSubview:navBar]; 
    [navBar release]; 

Как изменить фон позже в контроллере просмотра? Ниже не работает. Я думаю, это потому, что я не имею NavigationController:

NavigationBar *navigationBar = self.navigationController.navigationBar; 
navigationBar.backgroundColor = [UIColor colorWithRed:197.0f/255.0f green:174.0f/255.0f blue:135.0f/255.0f alpha:1.0]; 
navigationBar.barTintColor = [UIColor colorWithRed:197.0f/255.0f green:174.0f/255.0f blue:135.0f/255.0f alpha:1.0]; 
+0

Да, это потому, что вы не имеете NavigationController и вы получаете 'self.navigationController. navigationBar; ' сделать глобальную переменную для' UINavigationBar * navBar' или использовать тег. – 0yeoj

ответ

1

Попробуйте это:

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 41)]; 
navBar.tag = 1; 
... 
NavigationBar *navigationBar = (NavigationBar *)[self.view viewWithTag:1]; 
+0

Я думаю, что это ответ, но он говорит: «Несовместимый тип указателя присваивается« UINavigationBar * »из« UIView * ». к UINavigationBar? – lr100

+0

Да, просто для его решения: «Навигация навигации» NavigationBar = (NavigationBar *) [se lf.view viewWithTag: 1]; ' – Bannings

+0

@ lr100 Безопасно отображать представление' viewWithTag' – Bannings

Смежные вопросы