2016-11-15 2 views
0

Этот Apple Doc выглядит многообещающим, https://developer.apple.com/reference/uikit/uinavigationcontrollerdelegate?language=objc, но их не называют.Как проверить, был ли мой подкласс NavigationController нажатым и нажатым?

У меня есть CustomNavigationController, который наследуется от UINavigationController. Мне нужно знать, когда VC был нажат или выскочил из моего CustomNavC.

Я могу соответствовать UINavigationControllerDelegate, но это, похоже, больше для ViewControllers. Не для CustomNavC делать self.delegate = self.

Как это можно достичь?

ОБНОВЛЕНИЕ: ложная тревога. Извините. Я тестировал устройство и отключил ОС_ACTIVITY_MODE. Функции UINavigationControllerDelegate работают отлично.

+0

Сколько навигационных контроллеров у вас есть? Если у вас есть только один, вы можете просто добавить наблюдателя в стек навигации (свойство viewControllers), являющееся массивом. И отправьте уведомление, когда оно будет изменено! –

ответ

1

Одним из вариантов является переопределить pushViewController и popViewController методы.

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    [super pushViewController:viewController animated:animated]; 

    // Handle push as needed 
} 

Есть несколько pop... методов, которые можно переопределить, а также.

Вы также можете переопределить метод setViewControllers:animated:, который вызывается при замене всего стека.

Переопределение этих методов оставляет делегат свободным для использования другими классами.

+0

Можно ли добавить наблюдателя в UINavigationController viewControllers proeprty и наблюдать его при изменении? –

+0

@TejaNandamuri Возможно. Я никогда не пытался это сделать, поэтому не могу сказать точно. – rmaddy

+0

Хорошо, я постараюсь обновить свой комментарий здесь! –

0

Может быть, вы можете реализовать UINavigationControllerDelegate в вашем CustomNavigationController и добавить эти функции:

func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { 

    } 

func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { 

    } 
+0

Вопрос отмечен Objective-C, а не Swift. – rmaddy

+0

Это было первое, что я пробовал, однако эти функции никогда не называются. –

+0

Они также существуют в Obj-C. –