2013-05-28 2 views
1

Как я могу добавить метод к кнопке возврата UINavigationbar, поэтому всякий раз, когда я нажимаю эту кнопку, мне нужно проверить некоторые значения и показать UIAlertView? Есть ли какой-нибудь вариант для этого?Добавить метод в кнопку UINavigationBar назад?

я попробовал этот метод, но его работу для меня

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
    { 
    //show alert 
    } 

, а также этим методом, но оба не WOKING

-(void) viewWillDisappear:(BOOL)animated { 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
     // back button was pressed. We know this is true because self is no longer 
     // in the navigation stack. 
     NSLog(@"hi"); 
    } 

ответ

3

Да, вы можете В viedDidLoad

UIBarButtonItem * backBtn = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBackToAllPets:)]; 

    self.navigationItem.leftBarButtonItem = backBtn; 

записи следующая функция для проверки состояния

-(void)goBackToAllPets:(id)sender 
{ 
    if(/*check condition*/) 
    { 
     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"message" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil]; 
     alert.tag = 0; 
     [alert show]; 


    } 
    else 
    { 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 


} 
+0

ok. Спасибо за ваш ответ, позвольте мне попробовать, и я вернусь к u –

+0

его вид, как работающий для меня брата .... еще один минус, позвольте мне добавить это к основному proj –

+0

Если вы принимаете ответ. – Durgaprasad

1

Предположим, у вас есть два контроллера - Controller1 и Controller2. Контроллер2 выталкивается из контроллера 1. Поэтому, прежде чем толкая Controller2 на navigationController от Controller1

Controller2 *controller2 = [[[Controller2 alloc] init]autorelease]; 
self.navigationItem.hidesBackButton = YES; 

Теперь в viewDidLoad: метод Controller2, добавьте следующий фрагмент кода

UIBarButtonItem *backBarButtonItem =[[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBackToAllPets:)]autorelease]; 
self.navigationItem.leftBarButtonItem = backBarButtonItem; 

и в методе backButtonClicked, вы можете выполнить проверку Вам хотеть.

Смежные вопросы