Метод делегата dismisscontroller не работает

У меня есть 2 viewcontrollers, первый VC содержит backButton.

firstVC.h

@protocol DVDelegate <NSObject>
-(void)DVViewControllerDismissed:(NSString *)stringForFirst;
@end

а также содержит свойство делегата

@property (nonatomic, assign) id<DVDelegate> myDelegat;

firstVC.m

код backButton для firstVC

- (IBAction)backButton_Click:(id)sender {
    NSLog(@"EEEEEE:%@",_DFCJ);
    if([_DFCJ isEqual:@"DL"]){
        NSLog(@"159");
        if([self.myDelegat respondsToSelector:@selector(DVViewControllerDismissed:)])
        {
            [self.myDelegat DVViewControllerDismissed:_DFCJ];//this method not call 
            NSLog(@"aPP");
        }
        [self dismissViewControllerAnimated:YES completion:nil];
        NSLog(@"5555");
    }
}


SecondVC.m

@interface DiamondListVC ()<DVDelegate>

получить ниже метод

-(void)DVViewControllerDismissed:(NSString *)stringForFirst;{
    NSLog(@"AASASS");
   [self performSelector:@selector(callService) withObject:self afterDelay:0.1];
}

Журнал результатов

2018-04-21 09:33:39.382 search[907:16573] EEEEEE:DL
2018-04-21 09:33:39.382 search[907:16573] 159
2018-04-21 09:33:39.383 search[907:16573] 5555

но firstVC не уволит, пожалуйста, посмотрите мой код и дайте мне предложение.

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

1 ответ

Решение

Причина по которой firstVC не может быть отклонено, потому что firstVC выталкивается из secondVCне представлено.

Для передачи данных из firstVc в secondVcВам не нужно использовать делегат. Ты можешь получить secondVC от firstVC используя self.navigationController.viewControllers,

FirstVC.m

- (IBAction)backButton_Click:(id)sender {
  NSLog(@"EEEEEE:%@",_DFCJ);
  if([_DFCJ isEqual:@"DL"]){
    NSLog(@"159");

    // Get |SecondVC| by using |self.navigationController.viewControllers|
    NSArray* viewControllers = [[self navigationController] viewControllers]; 
    SecondVC *previousViewController = viewControllers[viewControllers.count - 2]; 
    [previousViewController DVViewControllerDismissed:_DFCJ];

    [self.navigationController popViewControllerAnimated:YES];
    NSLog(@"5555");
  }
}

SecondVC.h

@interface DiamondListVC : YourClass

-(void)DVViewControllerDismissed:(NSString *)stringForFirst;

@end
Другие вопросы по тегам