2013-08-08 2 views
0

Я создаю пользовательский UINavigationBar BarButtonItem следующим образом:изменение текста пункта пользовательских навигации бара

// Set up bar button items 
    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35.0f, 35.0f)]; 
    [backButton setImage:[UIImage imageNamed:@"myimg.png"] forState:UIControlStateNormal]; 
    [backButton addTarget:self action:@selector(myselector) forControlEvents:UIControlEventTouchUpInside]; 

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

Это работает отлично, но когда я иду, чтобы установить название UIButton или BarButtonItem, он не будет объявиться. Какие-либо предложения?

Пробовал ...

[backButton setTitle:@"Edit" forState:UIControlStateNormal]; 
    [backButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 

И ...

 self.navigationItem.leftBarButtonItem.title = @"Edit"; 

без удачи.

+0

Возможно, это связано с установкой изображения и попыткой перезаписи изображения с помощью собственного текста. – heinst

+2

Попробуйте установить изображение: [backButton setBackgroundImage: [UIImage imageNamed: @ "myimg.png"] forState: UIControlStateNormal]; – CRDave

+0

Почему не просто текст «Изменить» на изображении кнопки? – heinst

ответ

3

Проблема в том, что изображение и заголовок используют одинаковое пространство просмотра для отображения.

Итак, когда мы используем изображение с заголовком, сначала показываем изображение, а не заголовок (правая сторона изображения).

Если размер UIButton такой же, как изображение, которое мы не видим Название.

Простое решение установлено изображение в фоновом режиме. Так что попробуйте следующее:

[backButton setBackgroundImage:[UIImage imageNamed:@"myimg.png"] forState:UIControlStateNormal]; 
+0

спасибо, мой друг. Вы действительно решили мою проблему! – Apollo

0
UIImage *image = [UIImage imageNamed:@"myimg.png"]; 
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[backButton setBackgroundImage:image forState:UIControlStateNormal]; 
[backButton setTitle:@"Edit" forState:UIControlStateNormal]; 
[backButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal] 
backButton.frame=CGRectMake(0, 0, 35.0f, 35.0f); 

UIBarButtonItem *barButton= [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease]; 
self.toolbar.items = [NSArray arrayWithObject:barButton]; 
Смежные вопросы