2013-04-27 3 views
1

В настоящее время я пишу приложение с несколькими пользователями. Я хотел бы использовать один и тот же профиль «Профиль» в раскадровке для отображения информации для всех пользователей.Получить название backBarButtonItem

Планируется установить заголовок представления «Профиль», а затем нажать его.

- (void) pushGeneralProfileViewFrom:(UIViewController *)target usernameAsTitleOfView:(NSString *)title { 

    UIViewController *myView = [target.storyboard instantiateViewControllerWithIdentifier:@"GeneralProfileView"]; // created in storyboard, Feed View 
    myView.title = title; 
    [target.navigationController pushViewController:myView animated:YES]; 
} 

Это отлично работает. Однако в представлении «профиль» также есть кнопки, которые приводят его к другим представлениям в раскадровке. Эти представления также отображают конкретную информацию для соответствующего пользователя.

Я планировал использовать имя backBarButtonItem, чтобы узнать пользователя, которому нужно отобразить информацию. Хотя я вижу кнопку «Назад» с именем пользователя в симуляторе, я не могу получить его self.navigationController.navigationItem.backBarButtonItem.title или self.navigationItem.backBarButtonItem.title. Оба возвращаются null.

Что я делаю неправильно? Кроме того, у меня такое чувство, что это не самая лучшая практика для такого рода вещей. Я искал в Интернете и до сих пор не видел лучшего способа передать значения в представление, которое я нажимаю. Предложения?

Спасибо.

+0

Возможный дубликат [Как получить текст в backBarButtonItem?] (Http://stackoverflow.com/questions/5018129/how-to-get-the-text-in-a-backbarbuttonitem) – jk2K

ответ

3

backBarButtonItem, что вы видите, когда ваш контроллер представления виден в интерфейсе навигации контроллера не backBarButtonItem из это вид контроллера. Это backBarButtonItemвторой контроллер, один за ним в стеке.

Так что вы хотите, это:

UIInteger c = [self.navigationController.viewControllers count]; 
UIViewController* vc2 = [self.navigationController.viewControllers objectAtIndex:c-2]; 

Теперь получить backBarButtonItem в navigationItem из этого контроллера представления. Или просто получите его title, если они одинаковы.

+0

Работал как charm :) Спасибо. – thedp

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