2010-09-27 6 views
1

Я знаю, что это может показаться странным, но мне нужно добавить кнопку «Назад» на панели навигации первого вида navigationController. Я пытался так:Кнопка «Назад» на UINavigationController

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Foo" style:UIBarButtonItemStyleBordered target:self               action:@selector(foo:)]; 
self.navigationItem.backBarButtonItem=backButton; 

если вместо backBarButtonItem я пишу leftBarButtonItem кнопку предъявляется. Моя проблема в том, что мне нужна кнопка со стрелкой в ​​качестве обычной кнопки возврата. Это возможно?

ответ

0

Я не думаю, что вы можете сделать это на первый взгляд NavigationController, потому что вы должны установить свойство backBarButtonItem в контроллере родительского, прежде чем контроллер ребенок толкается. Кроме того, согласно Apple docs, цель & действие backBarButtonItem должно быть nil.

Этот вопрос о creating a left-arrow button on a UIToolbar может дать вам некоторые идеи о том, как вы могли бы обойти это с помощью настраиваемого образа (для leftBarButtonItem).

0

Конечно, вы можете это сделать. Вам просто нужно изменить заголовок leftBarButtonItem на задний план , после чего вы получите красивую кнопку со стрелкой влево с названием. Затем вы просто меняете селектор для фактического выполнения метода при нажатии кнопки. Так @selector(foo:)

Вот некоторые кода о том, как достичь выше:

self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone; 
self.navigationItem.leftBarButtonItem.title = @"Back"; 
self.navigationItem.leftBarButtonItem.target = self; 
self.navigationItem.leftBarButtonItem.action = @selector(endTextEnteringButtonAction:); 

Позвольте мне знать, если это помогает.

+0

Я попытался, как вы писали, но ничего не появилось. Должен ли я устанавливать кнопку текстовой строки перед использованием вашего кода? – PiccoloBuddha

+0

Я тоже попробовал, но не работал – ArunGJ

+0

ребята, вам нужно убедиться, что вы много задали делегат в методе did load, а также убедитесь, что кнопка создана в том же методе, в этом случае leftBarButtonItem, тогда вы можете начать делать что-то как то, что написано в ответ – Pavan

0

или вы также можете сделать следующее - я предпочитаю этот метод. Я получил это из другого поста.

Используйте следующие СДП, что я полученный из http://www.teehanlax.com/blog/?p=447

http://www.chrisandtennille.com/pictures/backbutton.psd

Тогда я просто создать пользовательские UIView, который я использую в свойстве customView пункта панели инструментов.

Хорошо работает для меня.

Надежда, что помогает немного

1

Обычно это работает из коробки, но иногда с модальными просмотров листов/действий может понадобиться это. Просто, прежде чем создать экземпляр ViewController и надвинуть navigationcontroller стеком, попробуйте

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Back" style: UIBarButtonItemStyleBordered target: nil action: nil]; 
    [[self navigationItem] setBackBarButtonItem: newBackButton]; 
    [newBackButton release]; 

    DetailViewController *detailVC = [[DetailViewController alloc]init]; 
    [self.navigationController pushViewController:detailVC animated:YES]; 
    [detailVC release]; 
0

Яблоко Документ говорит:

Когда этот пункт навигации сразу ниже верхнего элемента стека, контроллер навигации выводит назад для панели навигации в этом навигационном элементе.

Итак, если ваш элемент навигации является вершиной стека (как мы здесь говорим), вы не можете добавить кнопку «Назад» к контроллеру навигации просто потому, что нет места, где он может вернуться к нему, потому что это верхний элемент в стеке.

Обновлено Ответ: После того как я искал, я нашел работу раунд, чтобы сделать кнопку назад в вашем контроллере представления корневого контроллера навигации в этом link

Это очень просто :)

[self.navigationItem setHidesBackButton:YES animated:YES]; 
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStyleBordered target:self action:@selector(initializeStuff)]; 

self.navigationItem.leftBarButtonItem = backButton; 
Смежные вопросы