По моему мнению, ваш viewController даже не должен знать, что он просматривается модально.
Попробуйте поместить код, который отправляет сообщение dismissModalViewController, в ваш главный контроллер и предупредить ваш главный контроллер, что пользователь нажал кнопку dismissиспользуя делегата.
что-то вроде этого в вашем «родительском» viewController
-(IBAction)showInfo:(id)sender {
InfoView *info = [[InfoView alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
info.modalTransitionStyle = UIModalTransitionStylePartialCurl;
info.delegate = self;
[self presentModalViewController:info animated:YES];
[info release];
}
-(IBAction)closedButtonClicked {
[self dismissModalViewControllerAnimated: YES];
}
и в вашем «модальном» viewController
-(IBAction) exitInfo:(id)sender {
[delegate closedButtonClicked];
}
Конечно, вам понадобитсяпротокол вроде
@protocol MyCustomDelegate
-(IBAction)closedButtonClicked;
@end
и что-то подобное в вашем "модальном" интерфейсе
-id<MyCustomDelegate> delegate;