Есть простые варианты, которые я вижу.
Используйте метод viewDidDisappear:
в виду, которое вы отклоняете.
dismissViewControllerAnimated:completion:
метод принимает блок, который фактически выполняется после того, как viewDidDisappear
выполняет в увольнении.
Чтобы передать ссылку из одного контроллера представления к следующему:
В .h
файле второго вида контроллера, добавить свойство:
@property (nonatomic,strong) FirstViewController *firstVC;
В своем первом контроллере представления, добавьте следующий метод:
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender {
if([@"segue_YOUR_SEGUE_NAME" isEqualToString:[segue identifier]]) {
if([[segue destinationViewController] isKindOfClass:
[SecondViewController class]]) {
SecondViewController *dest = (SecondViewController*)[segue
destinationViewController];
dest.firstVC = self;
}
}
}
Теперь, на вашем втором контроллере, лет и может сделать две вещи, как я уже говорил:
[self dismissViewControllerAnimated:YES
completion:^{
[self.firstVC someMethod];
}];
ИЛИ ...
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.firstVC someMethod];
}
Таким образом, вы не хотите, чтобы показать первый контроллер представления снова? –
Конечно, я хочу снова показать первый контроллер представления, но когда он показывает, я хочу запустить метод в этом первом контроллере представления, поэтому мне нужно что-то вроде UIApplicationDidBecomeActiveNotification, но для возврата из модального сегмента. –