您可以使用模式視圖的委託模式來通知完成後呈現的模式。
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];
}
編輯:
我沒有用過UIImagePickerController
,但在看文檔,它看起來像你已經有最適合你做的代碼,因爲沒有一個現有的UIImagePickerControllerDelegate
類,有三種不同的「解僱「委託回調(儘管一個已被棄用)。所以你應該讓你的ParentViewController
類(不管那是什麼)實現UIImagePickerControllerDelegate
模式,然後實現這些方法。雖然每種方法都會做不同的事情(因爲您必須在用戶實際選擇圖片或取消圖片時處理),但每種方法最後都會做同樣的事情:致電dismissModalViewControllerAnimated:
關閉選取器。
看到我的答案更新。 – 2010-09-17 17:33:34