2013-11-26 5 views
2

Мне нужно установить стрелку назад, заменив обратно текст (кнопка) на панели навигации. Я могу просмотреть стрелку назад, но я не знаю, как скрыть задний текст в навигационном элементе. Вот мой код:Скрыть текст в навигационном элементе

с этим я получаю предупреждение:: CGImageCreateWithImageProvider: неверный размер изображения: 0 х 0.

(void)viewWillAppear:(BOOL)animated 
{ 
    UIImage *backButtonHomeImage = [[UIImage imageNamed:@"back-arrow.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 104, 13)]; 
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

    self.navigationItem.leftBarButtonItem = nil; 
} 

ответ

1

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

UIImage *backButtonHomeImage = [[UIImage imageNamed:@"back-arrow.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 104, 13)]; 
0

Просто установите пустой текст заголовка навигационной панели до нажатия на этот вид контроллера, как показано ниже код.

[email protected]" "; 
+0

SmartWork: Это не работает. Его ничего не показывают. –

+0

plz проверить ответ отредактировал – freelancer

+0

Smartwork: теперь он работает, но стрелочное шоу посередине. Нужно показать в углу? –

0

Создайте пользовательскую кнопку «Назад» и добавьте эту кнопку на кнопку «Назад» навигационного контроллера.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0,0,54,32); 
UIImage *backButtonImage = [UIImage imageNamed:@"back-arrow.png"]; 
[button setBackgroundImage:backButtonImage forState:UIControlStateNormal]; 
[button addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
[self.navigationItem setLeftBarButtonItem:barButtonItem]; 
0

Я надеюсь, что это будет работать

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 
3

Ответ

-(void)viewWillAppear:(BOOL)animated 
    { 
     [super viewWillAppear:animated]; 
     if([self.navigationController.viewControllers objectAtIndex:0] != self) 
     { 
      UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 26, 26)]; 
      [backButton setImage:[UIImage imageNamed:@"back-arrow.png"] forState:UIControlStateNormal]; 
      [backButton setShowsTouchWhenHighlighted:TRUE]; 
      [backButton addTarget:self action:@selector(popViewControllerWithAnimation) forControlEvents:UIControlEventTouchDown]; 
      UIBarButtonItem *barBackItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
      self.navigationItem.hidesBackButton = TRUE; 
      self.navigationItem.leftBarButtonItem = barBackItem; 
     } 
} 

-(void)popViewControllerWithAnimation 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 

} 

может это поможет.

+1

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

+0

@SaadChaudhry: Можете ли вы проголосовать за мой ответ? –

+0

уже сделано11! –

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