1

Я знаю viewcontroller's Элемент навигации backBarButtonItem отображается, когда другой контроллер представления помещается в стек, а это второй viewcontroller сверху.backBarButtonItem не получается отображаться

У меня есть ViewController А, имеют следующие в viewDidLoad

{ 
[super viewDidLoad]; 
self.navigationController.navigationBarHidden = NO; 
[self.navigationItem setBackBarButtonItem:[UIBarButtonItem itemWithImageNamed:@"ic_header_slide" selectedImage:nil target:nil action:nil]]; 
} 

Когда я нажимаю viewcontroller B, не получает отображается этот обычай кнопку назад, а я вижу, по умолчанию кнопка, которая создает IOS обратно.

A распространяется UITableViewController и B распространяется UIViewController. Я не устанавливаю leftBarButtonItem, leftBarButtonItems, rightBarButtonItem, rightBarButtonItems в любом из этих navigationItem.

EDIT Я прочитал о настройке leftBarButtonItems. установка левого баттона на B работает. но я думаю, что установка backBarButtonItem на A - правильный способ сделать это. Он также упоминается в документации, но не работает в моем случае. Я хочу спросить, есть ли ошибка в backBarButtonItem, или у меня есть некоторые недоразумения, как это работает, и я делаю это неправильно.

+0

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

+0

Я читал об этом. установка левых элементов на B работает. но я думаю, что установка backBarButtonItem на A - правильный способ сделать это. Он также упоминается в документации, но не работает в моем случае. – hridayesh

ответ

0

Чтобы скрыть по умолчанию обратно кнопка использования навигационной панели

self.navigationItem.hidesBackButton=TRUE; 

использовать также следующий метод для добавления пользовательских BarButtons,

- (NSArray*)getLeftNavButtons:(NSString*)image andTarget:(id)target andFrame:(CGRect)frame andSpace:(int)fixedSpace 
{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = frame; 
    button.clipsToBounds = YES; 
    [button setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal]; 
    [button addTarget:target action:@selector(leftNavBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:button]; 

    if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7")) 
    { 
    UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace 
             target:nil action:nil]; 
    negativeSpacer.width = fixedSpace; 
    return @[negativeSpacer,barButton]; 
    } 
    else{ 
    return @[barButton]; 
    } 

    return @[barButton]; 
} 
+0

Спасибо! Я читал об этом раньше. Обновлен мой вопрос. – hridayesh

0

Просто изменить настройки по умолчанию

self.navigationItem.hidesBackButton = YES; 
UIBarButtonItem *back = [[UIBarButtonItem alloc]init]; 
back.title = @"Pick Me"; 
back.image = @"Your image"; 
[self.navigationItem setLeftBarButtonItem:back]; 
+0

Спасибо! Я читал об этом раньше. Обновлен мой вопрос. – hridayesh

0

Set Right Bar Button Пункт

self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]init]; 

    UIImage *img1=[UIImage imageNamed:@"edit"]; 
    CGRect frameimg1 = CGRectMake(0, 0, img1.size.width, img1.size.height); 
    UIButton *signOut=[[UIButton alloc]initWithFrame:frameimg1]; 
    [signOut setBackgroundImage:img1 forState:UIControlStateNormal]; 
    [signOut addTarget:self action:@selector(btnEditClicked:) 
     forControlEvents:UIControlEventTouchUpInside]; 
// [signOut setShowsTouchWhenHighlighted:YES]; 

    UIBarButtonItem *barButton=[[UIBarButtonItem alloc]initWithCustomView:signOut]; 
    self.navigationItem.rightBarButtonItem=barButton; 

Set Left Bar Кнопка Пункт

UIImage *img11=[UIImage imageNamed:@"home"]; 
    CGRect frameimg11 = CGRectMake(0, 0, img11.size.width, img11.size.height); 
    UIButton *signOut1=[[UIButton alloc]initWithFrame:frameimg11]; 
    [signOut1 setBackgroundImage:img11 forState:UIControlStateNormal]; 
    [signOut1 addTarget:self action:@selector(showLeftMenuPressed:) 
     forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *barButton1=[[UIBarButtonItem alloc]initWithCustomView:signOut1]; 
    self.navigationItem.leftBarButtonItem=barButton1; 

    self.navigationController.navigationBar.barTintColor=ColorNav; 
    self.navigationController.navigationBar.translucent=FALSE; 

Комплект навигации Название & Цвет

self.title = titletext; 
    [[[self navigationController] navigationBar]setTitleTextAttributes:@{NSForegroundColorAttributeName: textColor}]; 

enter image description here

+0

Спасибо! leftBarButtonItem работает. Я хочу спросить, есть ли ошибка в backBarButtonItem или у меня есть некоторые недоразумения, как это работает? – hridayesh

+0

@hridayesh, если вы satiesfied, то пожалуйста, upvote ответ. – Mehul

+0

@hridayesh, на самом деле я не знаю идеального ответа, но пытаюсь установить нуль, а затем снова назначить init. и снова установить, это должна быть работа. – Mehul