2011-05-31 37 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以減輕任何警告,但它應該在沒有它的情況下正常工作

相關問題