UINavigationBar неприятности - PullRequest
       44

UINavigationBar неприятности

0 голосов
/ 31 декабря 2011

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

Установка моего собственного 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];

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

    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];

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

Спасибо!

РЕДАКТИРОВАТЬ: Извините отправил неправильный код для последнего выпуска:

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;

Ответы [ 2 ]

0 голосов
/ 31 декабря 2011

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

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


А для того, чтобы метод не вызывался, нужно установить @selector для вызова

Вы можете использовать этот метод для создания кнопки

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

Редактировать
Для кнопки возврата
Не создавайте UIButton, перейдите непосредственно к UIBarButton.
Вот как я создаю элемент 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 голосов
/ 31 декабря 2011

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

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