Вы используете шаблон делегата для модального просмотра, чтобы сообщить, кто его представил, когда он будет готов.
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:
, чтобы отклонить сборщик.
См. Мой ответ для обновления. –