2014-12-04 3 views
0

У меня есть два ViewControllers, первый и второй. Они связаны с шоу (push) segue. Я нажимаю кнопку on firstViewController, чтобы перейти к secondViewController. Затем, используя автоматически добавленный навигационный контроллер <First, я возвращаюсь к firstViewController. Однако здесь я хотел бы получить предупреждающее сообщение при нажатии навигационного контроллера на firstViewContoller. Как мне это сделать?Как определить, нажата ли кнопка навигации навигации (push) segue?

+0

Не совсем понятно, о чем вы просите, но, возможно, 'prepareForSegue:' является то, что вы ищете. – Jack

+0

Какое «оповещение»? Как UIAlertView/UIAlertController? –

+0

На втором экране управления панель навигации будет выглядеть так: '

ответ

1

Вы можете работать по методу viewWillDisappear на втором контроллере представления, как это:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    if(self.isMovingFromParentViewController){ 
     NSLog(@"Controller being popped"); 
    } 
} 

В этом случае сам. isMovingFromParentViewController будет правдой, если контроллер выскочит.

Вы также можете проверить себя. isMovingToParentViewController на viewWillAppear, например, чтобы проверить, что контроллер нажат.

Также я. isBeingDismissed и сам. isBeingPresented доступны и относятся к тому, когда контроллер представляется/уволен (по тексту).

2

То, что вы ищете, это UINavigationControllerDelegate.

Я считаю, что метод, который дает вам сообщение, Вам необходимо это

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

И

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

В вашем CustomViewController, вы будете хотеть, чтобы соответствовать UINavigationControllerDelegate протоколу, как это:

@interface CustomViewController : UIViewController <UINavigationControllerDelegate> 

И затем переопределить методы делегата выше на g и те сообщения, которые вы ищете.

Вот полная реализация в Swift:

import UIKit 

class ViewController: UIViewController, UINavigationControllerDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     navigationController?.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { 
     println(viewController) 
    } 
} 

class FirstViewController: ViewController { 
} 

class SecondViewController: ViewController { 
} 
Смежные вопросы