2011-05-31 57 views
0

我的应用程序的根视图控制器是一个导航控制器,而ImagePickerController是作为模态视图控制器呈现的。在选取图像后,我想将视图控制器推送到根目录导航控制器之前 ImagePickerController被解散。 这可能吗?感谢您的任何提示:)我可以将视图控制器推送到后端的UINavigationController中

===================
我已经尝试在ImagePickerController被解雇之前推送一个新的viewcontroller。但是它并没有被推送,看起来UINavigationController只有当它是当前的顶视图控制器时才可以用于推送/弹出。 @bala
如果我先关闭ImagePickerController,然后再推一个视图控制器,会出现两个动画。讨厌〜

回答

1

那么,如果你所要求的当图像拾取这个方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 
    ... 
    [self.navigationController pushViewController:controller animated:YES]; 
    .... 
} 

被驳回当前视图控制器的顶部比你可以做

[self.navigationController pushViewController:controller animated:YES]; 

推视图控制器如果您要求显示根视图控制器,则可以使用此方法

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

但是,如果您要求将视图控制器推到堆栈的底部,那么就没有可用的文档化方法。

+0

我的问题是如何在后端将视图控制器(标记为VC1)在UIImagePickerController消失之前,VC1已经被推送。如果没有,会有两个动画(一个是UIImagePickerController消失,另一个是推VC1),这看起来不太好。 – Fourj 2011-05-31 06:01:34

+0

@Fourj比你可以用动画推动视图为NO – Robin 2011-05-31 09:27:54

0

我假设你从导航控制器堆栈中的控制器提供imagepicker控制器。所以,如果你已经设置了imagepicker的委托到所呈现的imagepicker控制器控制器,你可以做这样的事情在imagepicker委托方法:

[self.navigationController pushViewController:newController animated:NO]; 
//Now dismiss imagepicker controller 
[picker.parentViewController dismissModalViewControllerAnimated:YES]; 
0

从根视图控制器推视图控制器,你只需要设立代表。基本上,在你的模式视图控制器的头,插入

id delegate; 

@property (nonatomic, assign) id delegate; 

合成它在实现文件。

当您创建要呈现的模态视图控制器时,请设置myModalViewController.delegate = self;。现在你可以从你的委托中调用根视图控制器中的方法。例如,您可以在根视图控制器中调用一个名为pushVC的方法,因此在解除模态视图控制器之前,您可以从其中调用[self.delegate pushVC];,它将执行您在该方法中所拥有的任何内容,例如用于推送视图的代码控制器从模态视图控制器的下面。您可能需要在您的模式视图控制器中为您的委托方法设置@protocol以减轻任何警告,但它应该在没有它的情况下正常工作

相关问题