Родительский вид navigationController - PullRequest
7 голосов
/ 20 февраля 2011

У меня есть представление, которое является частью tabBarController. В этом представлении у меня есть подпредставление с таблицей. При нажатии на ячейку в этой таблице я хотел бы получить доступ к navigationController родительского представления. Возможно ли это - и если да, то как?

Я думал, что это будет

BandDetailViewController *bandDetailViewController = [[BandDetailViewController alloc] initWithNibName:@"BandDetailViewController" bundle:nil];
bandDetailViewController.band = [thisDay objectAtIndex:indexPath.row];

[super.navigationController pushViewController:bandDetailViewController animated:YES];
[bandDetailViewController release];

Но это не работает.

Ответы [ 2 ]

10 голосов
/ 20 февраля 2011

Когда вы создаете экземпляр контроллера подчиненного представления, передайте ссылку на контроллер навигации (super's) и сохраните ее в переменной экземпляра.Затем вы можете ссылаться на него, когда вам это нужно в подпункте.Я искал более элегантное решение этой и подобных проблем, но безуспешно.Передача в ссылку работает, поэтому я делаю это и пытаюсь продолжить свою жизнь.

РЕДАКТИРОВАТЬ: добавить пример кода

В mainVC.m

 // this might be in didSelectRowForIndexPath:
 SubViewController *subVC = [[SubViewController alloc] init];
 subVC.superNavController = self.navController;
 [self.navigationController pushViewController:subVC animated:YES];

ВSubViewController.h

 @property (nonatomic, retain) UINavigationController *superNavController;

In SubViewController.m

  @synthesize superNavController;


  // then, wherever you need it, say to pass to a sub-sub-viewController...
  [self.superNavController pushViewController:myNewVC animated:YES];
0 голосов
/ 20 февраля 2011

Когда вы вызываете -pushViewController, какой контроллер представления является self?Если вы вызываете это из одного из ваших подпредставлений вкладки, скорее всего, у вас нет ссылки на контроллер навигации из представления верхнего уровня, к которому вы добавили его.

Пожалуйста, посмотрите этот пост.Похоже, у этого парня такая же проблема.

Невозможно pushViewController для подпредставления

...