Как добавить элемент навигации из контроллера просмотра, встроенного в представление контейнера

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

UIBarButtonItem *newConvoButton = [[UIBarButtonItem alloc] initWithTitle:@"New convo" style:UIBarButtonItemStyleBordered target:self action:@selector(newConvoInit:)];
self.parentViewController.navigationItem.rightBarButtonItem = newConvoButton;

И я знаю, что код будет работать нормально, если бы он был в родительском VC, и я удалил ".parentViewController".

Итак, как я могу добавить элемент навигации из встроенного VC?

EDIT:

Вот скриншот: 1 TVC в правильных журналах (null) для self.parentViewController.

Ответ 2

Я кодирую ваш сценарий, а self.parentViewController.navigationItem работает для меня. Вы уверены, что вызываете addChildViewController? Я просто не вижу, как parentViewController равен нулю, если вы вызываете addChildViewController. Я должен признать, что хотя self.parentViewController.navigationItem работает для меня, выяснение того, как кто управляет элементами навигации, родителем или ребенком, является довольно сложным. С типичными стековыми навигационными стеками pushViewController каждый контроллер имеет тенденцию иметь собственное время навигации (UINavigationItem). В моем случае я хочу, чтобы родительский элемент управлял некоторыми элементами панели навигации, но я хочу, чтобы дети добавляли/контролировали другие.

Ответ 3

В представленииDidAppear

-(void)viewDidAppear:(BOOL)animated
{
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"add_baby"]
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:self
                                                                 action:@selector(addNewBaby)];
    [self.parentViewController.navigationItem setRightBarButtonItem:rightItem];
}