Метод делегата dismisscontroller не работает
У меня есть 2 viewcontroller
s, первый 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