我无法找出最有效和“优雅”的方法来完成某项任务。问题定义如下: 我想要显示多个视图,其中之一是具有相机胶卷来源的ImagePicker。ImagePicker在视图层次结构问题
层次结构看起来类似于此: 主视图---> PICKER --->图像处理视图 当用户点击“后退按钮”UI时必须允许反向显示。
我尝试了好几种选择:
1.
a)主视图显示选择器视图模式方式。 b)在didFinishPickingMediaWithInfo委托方法中关闭选取器模态视图,之后用IMAGE PROCESSING VIEW调用presentModalViewController。
样品的编号:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage* pickedImage = [info valueForKey:UIImagePickerControllerEditedImage];
LastViewController* vc = [[LastViewController alloc] init];
vc.mainImage = pickedImage;
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController:vc animated:NO];
}
问题是,它不工作,引起控制器不能驳回另一个(previouse不会立即消失之后显示下一个模态,主要是不活跃立即并且不能呈现新的)。
2. MAIN VIEW以模态方式呈现图像处理视图,但在图像处理视图模态呈现选取器视图后,等待完成,解除选取器和用户可以从库中看到图像处理视图。
样品的编号:
ImageProcessViewController *vc = [[ImageProcessViewController alloc] initWithNibName:@"ImageProcessViewController" bundle:nil];
vc.delegate = self;
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:vc animated:NO];
[vc release];
在ImageProcessViewController
:
在主视图控制器的一些动作- (void)viewDidLoad {
[super viewDidLoad];
//some UI init here
if(self.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
ipc.delegate = self;
ipc.allowsEditing = YES;
[self presentModalViewController:ipc animated:NO];
[ipc release];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage* pickedImage = [info valueForKey:UIImagePickerControllerEditedImage];
self.mainImage = pickedImage;
[self dismissModalViewControllerAnimated:NO];
}
问题是,我不能调用presentModalViewController在viewDidLoad方法,因为它将无法正常工作(我猜这是在视图控制器的生命周期为时尚早)。我也尝试viewDidAppear,但在这种情况下,我必须设置一些伊娃国旗,显示选择器视图只有一次,空图像处理视图短时间之前显示图像选择器视图,我不想这样。
3. 我试图找出如何使用导航控制器来做到这一点,因为UIImagePickerController使用他的导航控制器,但这是私人结构和文档说程序员不能这样做。
请给我一些建议,因为我真的失去了我的路,此刻
你可以发布一些示例代码? – dhirschl 2011-02-18 15:16:18
发布更新了样本 – 2011-02-18 16:29:53