0

В моем приложении я использую пользовательские UINavigationBar и настраиваемые элементы UIBarButtonItems в NavigationController. Мой (настраиваемый) NavigationBar выглядит отлично, но когда я хочу разместить свой собственный backBarButtonItem и RightBarButtonItem, это пойдет не так.UINavigationBar troubles

Установка моего собственного backBarButtonItem не работает вообще (после метода PushViewController). Я использую этот код:

UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom]; 
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"]; 

    [home setBackgroundImage:homeImage forState:UIControlStateNormal]; 

    home.frame = CGRectMake(0, 0, 51, 30); 
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
            initWithCustomView:home]; 


    [self.navigationItem setBackBarButtonItem:backButton]; 

У меня также есть свои праваBarButtonItem. Я могу получить его на моем навигационном блоке, но он не вызывает метод, который я хочу сделать. Вот мой код для этого один:

UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom]; 
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"]; 

    [home setBackgroundImage:homeImage forState:UIControlStateNormal]; 

    home.frame = CGRectMake(0, 0, 51, 30); 
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
            initWithCustomView:home]; 
    // self.navigationItem.backBarButtonItem = cancelButton; 

    [self.navigationItem setBackBarButtonItem:cancelButton]; 

Через пару часов, глядя в Интернете для решения, без результата, я надеюсь, что вы, ребята, можете мне помочь!

Спасибо!

EDIT: К сожалению, отправил неправильный код последнего выпуска:

UIButton *home2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
[home2 setTitle:@"Sort" forState:UIControlStateNormal]; 
[home2.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]]; 

UIImage *homeImage2 = [UIImage imageNamed:@"Topbarbutton"]; 

[home2 setBackgroundImage:homeImage2 forState:UIControlStateNormal]; 

home2.frame = CGRectMake(0, 0, 77, 30); 
UIBarButtonItem *cancelButton2 = [[UIBarButtonItem alloc] 
           initWithCustomView:home2]; 
[cancelButton2 setTarget:self]; 
[cancelButton2 setAction:@selector(sorteren)]; 



self.navigationItem.rightBarButtonItem = cancelButton2; 
+0

Если я получаю ситуацию правильно, Панель навигации показывает leftBarButton и rightBarButton правильно в Коренной View Controller, пока не нажать другую View Controller? – barley

ответ

0

Хм, кажется, вы хотите добавить добавить кнопку в нижней панели инструментов? Вот как вы могли бы сделать это:

UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"Title" target:self action:@selector(myButtonClicked:)]; 
    [toolbar setItems:[NSArray arrayWithObjects:myButton, nil]]; 
+0

Нет, я работаю с NavigationBar – Jelle

0

Существует поймать с backBarButtonItem вы установили его на более UIViewController, но он не будет отображаться, когда этот вид виден, он будет отображаться только тогда, когда это мнение это тот, на который нужно вернуться.

backBarButtonItem
Кнопка бар элемент для использования при нажатии обратно необходимо на панели навигации.
@property (неатомический, сохранить) UIBarButtonItem * backBarButtonItem
Обсуждение
Когда навигация пункт непосредственно под верхним элементом в стеке, контроллер навигации получает обратную кнопку для панели навигации от этого элемента навигации. Когда это свойство равно нулю, элемент навигации использует значение в свойстве заголовка для создания соответствующей кнопки возврата. Если вы хотите указать пользовательское изображение или заголовок для кнопки «Назад», вы можете назначить для этого свойства элемент пользовательской панели (с вашим пользовательским названием или изображением). При настройке элемента панели, не назначайте ему индивидуальное представление; элемент навигации в любом случае игнорирует пользовательские представления в кнопке панели.
Значение по умолчанию этого свойства равно nil.


И метод не вызывается вам нужно установить @selector называться

You could use this method to create your button

- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 

Редактировать
Для задней кнопки
Не создавайте UIButton, идите на UIBar Кнопка напрямую.
Вот как я создаю backBarButtonItem.

UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Maison.png"] 
                 style:UIBarButtonItemStylePlain 
                 target:nil 
                 action:nil]; 
self.navigationItem.backBarButtonItem = bbi; 
[bbi release], bbi = nil; 
+0

Я понимаю, что это будет отображаться только тогда, когда это представление не вернется, но оно просто не появится. Случайный синий backBarButtonItem виден, но не мой настроенный barBackButtonItem. – Jelle

+0

И о второй проблеме: я отправил неправильный код. (он есть сейчас) Как вы видите, я вызываю селектор, но он не работает. – Jelle

+0

@JelleAges для вас вторая проблема: можете ли вы добавить метод, который вы вызываете –