Как получить родительский навигационный контроллер в UIView - PullRequest
3 голосов
/ 09 мая 2011

Я создал UITabBarController в моем делегате приложения. где каждый элемент панели вкладок содержит различный UINavigationController, который загружает пользовательский UIViewController с NIB (используя -pushViewController:). Внутри одного из контроллеров навигации я также загружаю собственный класс UIView с пользовательским NIB. Это представление загружается несколько раз внутри UIViewController.

У пользовательского UIView есть UIButton, и в случае прикосновения я хочу поместить в стек новый UIViewController. Проблема в том, что я «потерял» UINavigationController, который содержит UIViewController. Я знаю, что должен использовать делегатов, но я не определился, кому следует, какой класс должен быть делегатом.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Ни .navigationController, ни .tabBarController не будут доступны для UIView или UIViewController, который был создан, но не помещен в стек

Либо создайте свойство в вашем классе View (или ViewController), который является UIViewController, который являетсяпредоставляется опционально после инициализации или вы можете добавить третий аргумент в initWithNibName:bundle:

@interface CustomViewController : UIViewController
{ 
    UIViewController *owner;
}

@property (nonatomic, assign) UIViewController* owner;

@end

Тогда в владельце ViewController:

CustomViewController *cvc = [[CustomViewController alloc] initWithNibNamed:nil bundle:nil];
cvc.owner = self;

Это очень плохо. ParentViewController только для чтения, этобыло бы разумным местом для этого.

0 голосов
/ 26 декабря 2012

Вы можете получить это, используя UIApplication класс.Используя этот класс, вы можете найти, какой viewController находится на первом месте.Вот решение ссылка для вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...