являются customViews для UIBarButtonItems, игнорируемых для leftBarButtonItem - PullRequest
0 голосов
/ 27 января 2012

Из документации я вижу это для backBarButtonItem:

Когда это свойство равно nil, элемент навигации использует значение в своем Свойство title (стр. 10) для создания соответствующей кнопки возврата. если ты хотите указать собственное изображение или заголовок для кнопки назад, вы можете назначить пользовательский элемент панели кнопок (с вашим пользовательским заголовком или изображением) это свойство вместо. При настройке элемента панели кнопок не назначить ему собственный вид; элемент навигации игнорирует пользовательские представления в любом случае в кнопке задней панели.

Я не знал, было ли то же самое для leftBarButtonItem? В основном у меня есть этот код:

UIButton *homeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
UIImage *homeImage = [UIImage imageNamed:@"icon_house.png"];
[homeButton setImage:homeImage forState:UIControlStateNormal];
[homeButton addTarget:self action:@selector(homePressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *homeBBI = [[UIBarButtonItem alloc] initWithCustomView:homeButton];

До iOS 5 я поместил это в UIToolBar, и оно обнаружилось нормально. Теперь я хочу поместить это как leftBarButtonItem, справа от backButton контроллера UINavigationController. Когда я его устанавливаю, он вообще не появляется. Там нет изображения. Однако, когда я создаю какую-то кнопку, подобную этой:

    UIBarButtonItem *hButton = [[UIBarButtonItem alloc] initWithTitle:@"home" style:UIBarButtonItemStylePlain target:self action:@selector(homePressed:)];

и установите его как leftBarButtonItem, он появится. Я не знал, как получить свой собственный значок для кнопки «Домой» без границ. Когда я использую:

    UIBarButtonItem *hButton2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_house.png"] style:UIBarButtonItemStylePlain target:self action:@selector(homePressed:)];

У меня есть граница вокруг моего дома, которая мне не нужна. Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 января 2012

попробуйте

UIButton *TastoVersamento = [UIButton buttonWithType:UIButtonTypeCustom];
        [TastoVersamento setImage:[UIImage imageNamed:@"Versamento.png"] forState:UIControlStateNormal];
        [TastoVersamento addTarget:self action:@selector(Click_Versamento:) forControlEvents:UIControlEventTouchUpInside];
        [TastoVersamento setFrame:CGRectMake(0, 0, 40, 40)];
        [[self navigationItem] setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithCustomView:TastoVersamento] autorelease]];
1 голос
/ 27 января 2012

backBarButtonItem и leftBarButtonItem различны. backBarButtonItem является значением по умолчанию, если не указано leftBarButtonItem. Он также будет отображаться, даже если установлено leftBarButtonItem, если leftItemsSupplementBackButton равно YES.

В первом примере вы можете попробовать [homeButton sizeToFit]. Я думаю, что кадр может быть неправильно настроен.

Но что касается вашего последнего комментария, я думаю вам не удастся удалить границу с кнопок элементов навигации. Я уверен, что они жестко запрограммированы. Фактически, если вы добавите кнопку с рамкой, вы получите две, одну из кнопки и одну из элемента навигации.

...