Вы используете шаблон делегата для модального представления, чтобы информировать того, кто представил его, когда он закончится.
MyModalViewController.h:
@protocol MyModalViewControllerDelegate;
@interface MyModalViewController : UIViewController
{
id<MyModalViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id<MyModalViewControllerDelegate> delegate;
@end
@protocol MyModalViewControllerDelegate
- (void)myModalViewControllerFinished:(MyModalViewController*)myModalViewController;
@end
MyModalViewController.m:
@synthesize delegate;
// Call this method when the modal view is finished
- (void)dismissSelf
{
[delegate myModalViewControllerFinished:self];
}
ParentViewController.h:
#import "MyModalViewController.h"
@interface ParentViewController : UIViewController <MyModalViewControllerDelegate>
{
}
ParentViewController.m:
- (void)presentMyModalViewController
{
MyModalViewController* myModalViewController = [[MyModalViewController alloc] initWithNibName:@"MyModalView" bundle:nil];
myModalViewController.delegate = self;
[self presentModalViewController:myModalViewController animated:YES];
[myModalViewController release];
}
- (void)myModalViewControllerFinished:(MyModalViewController*)myModalViewController
{
[self dismissModalViewControllerAnimated:YES];
}
EDIT:
Я не использовал UIImagePickerController
, но, глядя на документы, похоже, что большая часть кода уже сделана для вас, так как существует класс UIImagePickerControllerDelegate
, который имеет три различные обратные вызовы делегатов "увольнение" (хотя один из них устарел). Поэтому вы должны заставить свой класс ParentViewController
(что бы это ни было) реализовывать шаблон UIImagePickerControllerDelegate
, а затем реализовывать эти методы. В то время как каждый метод будет выполнять что-то свое (поскольку вы должны обрабатывать его, когда пользователь фактически выбирает изображение или отменяет его), каждый из них будет делать то же самое в конце: вызовите dismissModalViewControllerAnimated:
, чтобы отменить выбор.