2015-07-03 18 views
1

Я использую следующий код для создания панели навигации в своем приложении. (Мое приложение было сбой, когда я использовал толчок SEGUE так что мне нужен модальный SEGUE означающего панель навигации скрыта после модального перехода называется)Программно добавить кнопку возврата в UINavigationBar?

UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; 
//do something like background color, title, etc you self 
[self.view addSubview:navbar]; 

знают любой любые методы, которые я могу использовать с указанным кодом для достижения функциональности кнопки возврата в панели навигации?

+0

Если вы хотите кнопку назад в навигационной панели, то почему бы вам не нажать ViewController вместо модально представить его? –

+0

Хороший вопрос: из-за того, что мне пришлось менять тип segue от push до модального, потому что по какой-то причине он разбивал мое приложение, когда я нажимал изображение в контроллере вида, который называл бы segue. Я тоже нашел это странным, потому что долго работал хорошо ... – thisguy

+0

Затем попытайтесь исправить эту ошибку и использовать push segue. Тогда вам не придется использовать ненужный код. –

ответ

2

Используйте приведенный ниже код, чтобы добавить кнопку «Назад» в левой части панели навигации. Добавить UIBarButtonItem в панели навигации.

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
          initWithTitle:@"Back"            
          style:UIBarButtonItemStyleBordered 
          target:self 
          action:@selector(backBtnClicked:)]; 
self.navigationItem.leftBarButtonItem = backButton; 
1

Добавить Назад Кнопка с изображения:

UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 70.0f, 21.0f)]; 
UIImage *backImage = [UIImage imageNamed:@"backBtn"]; 
[backButton setImage:backImage forState:UIControlStateNormal]; 
[backButton setTitleEdgeInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 0.0)]; 
[backButton setTitle:@"Back" forState:UIControlStateNormal]; 
[backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
[negativeSpacer setWidth:-15]; 

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,backButtonItem,nil]; 
1

BackButton лучше, чем LeftButton я думаю:

UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] init]; 
[desVC.navigationItem setBackBarButtonItem:backBtn]; 
2

Используйте ниже код, чтобы добавить кнопку назад на левой стороне

UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; 
//do something like background color, title, etc you self 
[self.view addSubview:navbar]; 

UINavigationItem *item = [[UINavigationItem alloc] 
           init]; 
navbar.items= @[item]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
           initWithTitle:@"Back" 
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(backBtnClicked:)]; 
item.leftBarButtonItem = backButton; 
+0

Я получаю свойство предупреждения leftbarbuttonitem не найден на объекте типа UINavigationbar 'с указанным выше кодом. Я также попробовал 'self.navigationItem.leftBarButtonItem = backButton;' но все равно ничего. это странно ...? – thisguy

+0

проверить код обновления –

+0

Хорошо, наконец, показывает кнопку «Назад», но при нажатии на нее происходит сбой приложения? что происходит...? есть идеи?это то, что область отладчика говорит «Завершение приложения из-за неперехваченного исключения» NSInvalidArgumentException », причина:« - [StreamPhotoScreen backBtnClicked:]: нераспознанный селектор, отправленный в экземпляр 0x16fd66d0'' – thisguy

1

Что касается кнопки «Назад», правильный способ: не, чтобы создать свой собственный.

UINavigationItem класс имеет надлежащую поддержку для этого:

  • func setHidesBackButton(_:animated:)
  • var leftItemsSupplementBackButton: Bool

Итак, если вы хотите добавить пользовательскую кнопку на левой стороне, просто установите leftItemsSupplementBackButton в true ,

Или позвоните

self.navigationItem.setHidesBackButton(false, animated:false)