Я бы решил эту проблему с помощью метода делегата.
Сначала создайте протокол в вашем modalViewController
@protocol ModalViewDelegate <NSObject>
- (void)didDismissModalView;
@end
И установите свойство делегата в том же modalVC:
id<ModalViewDelegate> dismissDelegate;
Затем создайте buttonActionMethod, который вызывает делегат в modalVC:
- (void)methodCalledByButton:(id)sender
{
// Call the delegate to dismiss the modal view
[self.dismissDelegate didDismissModalView];
}
Теперь ваш modalVC готов, вы должны подготовить mainVC, вызывающий modalVC: вы должны заставить свой MainViewController соответствовать делегату.:
@interface MainViewController : UIViewController <ModalViewDelegate>
В месте, где вы выделяете ваш ModalViewController, вы должны установить свойство делегата, которое вы сделали в вашем modalViewController:
self.myModalViewController.dismissDelegate = self;
Теперь MainViewController слушает делегата и единственное, что нужновам нужно реализовать делегатный метод.
-(void)didDismissModalView
{
[self dismissModalViewControllerAnimated:YES];
}
Теперь ваш ModalVC будет отпускать при нажатии кнопки (по крайней мере, когда вы вызываете метод должным образом)
Надеюсь, все это имеет смысл.Удачи.