Joy
Допустим, у вас есть viewController, который представляет другой модально - назовите его «root».
Модал называется "Модал"
"Корень" скажет,
[self presentModalViewController:Modal];
Так как же Root узнает, когда уволить Модал? Лучший способ сделать это - составить «протокол» для этого поведения.
В заголовочном файле для Modal будет такой код:
@protocol ModalViewDelegate <NSObject>
-(void)modalViewControllerDidFinish:(UIViewController *)viewController;
@end
Тогда должна быть переменная экземпляра для модального:
id<ModalViewDelegate> delegate;
со свойством:
@property (assign) id<ModalViewDelegate> delegate;
Это делает так, что каждый раз, когда Модал отправляет сообщение своему свойству «делегат», мы знаем, что у него есть метод - (void) modalViewControllerDidFinish:
Допустим, внутри модала есть кнопка, которую вы хотите закрыть. На кнопку просто нужно позвонить [delegate modalViewControllerDidFinish:self];
В заголовочном файле для root вы объявляете класс следующим образом:
@class Root : UIViewController <ModalViewDelegate>
И вы реализуете метод modalViewControllerDidFinish следующим образом:
-(void)modalViewControllerDidFinish:(UIViewController *)controller {
// any action you need to take on controller
[self dismissModalViewControllerAnimated:YES];
}
Имеет ли это смысл?