0

我瀏覽過不同的類似問題,但找不到對我的問題有用的任何內容。我掙扎着的東西很簡單,但我無法弄清楚。如何在UINavigationController中使用UIImagePickerController

我正在使用Xcode 4.6.2和Storyboarding。這裏是故事板: enter image description here

這裏是我想擁有的工作流程:

  • 在tableVC在細胞大坪應該推編輯文檔視圖,並提供了返回和完成按鈕。
  • 在相機圖片上貼上應該「加載」(push/modal?)我的cameraVC,它是UIImagePickerController的子類。我在拾取器的頂部添加了自定義覆蓋圖,並使用自定義按鈕拍攝圖片。在此事件中,我當前執行通向previewDocumentView(模態呈現)的segue,並且當點擊「Use」按鈕時,我呈現Edit文檔視圖。

問題是編輯文檔視圖沒有導航欄,即使我嘗試,因爲我已經有模式提出的意見的財產self.navigationBarHidden = NO;這似乎是正常的,雖然設置爲我,但如何做到這一點呢?

我試着從桌面VC推我的cameraVC,但我得到一個錯誤,指出禁止堆疊2 navigationControllers(因爲UINavigationController的UIImagePickerController子類的cameraVC子類)。似乎我唯一的選擇是以模態方式呈現cameraVC,但是我不知道如何使用其導航欄顯示編輯文檔VC。

編輯:在cameraVC中有一個導航欄並不是最佳的,但如果這是唯一的方法,那麼可以接受。

+0

爲什麼你不關閉cameraVC,然後推EditDocumentView,這樣你將有你需要的NavigationBar。 – Bonnie 2013-05-13 08:38:40

+0

您可以嘗試將相機視圖控制器嵌入到導航視圖控制器中,並將導航欄設置爲隱藏。然後,當您從相機視圖轉到編輯文檔視圖時,可以取消隱藏導航欄。 – rickerbh 2013-05-13 08:47:34

+0

@Bonnie,因​​爲我需要cameraVC和editDocVC之間的previewDocumentVC。該視圖對於用戶確認或解除他拍攝的照片的使用是必要的。此外,有沒有一種方法可以在cameraVC被解僱時通知listDocumentsVC推送視圖?我已經嘗試過這樣的事情了。 self dismissViewControllerAnimated:NO completion:^ {self_seSegueWithIdentifier:kPreviewSegue sender:doc]; }];但我最終在listDocumentsVC警告嘗試在yy上呈現xx,而yy的視圖不在窗口層次結構中! – Anth0 2013-05-13 08:51:43

回答

1

這似乎是最好的解決方案是使用unwind segue!

總結:

1)在tableVC創建一個方法如

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue 
{ 
    NSLog(@"Rolled back"); 
} 

2)爲您的previewDocumentVC創建一個退繞SEGUE,並給它一個唯一的ID,如 「unwindFromPreview」,連接它到了unwindToThisViewController IBAction。 請檢查這answer我已經給出了關於如何實現這一點的詳細步驟(步驟2和3)。

3)創建你的previewDocumentVC一個prepareForSegue方法,您可以設置一些tableVC BOOL屬性,如

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"unwindFromPreview"]) { 
     ((TableVC*)segue.destinationViewController).shouldTransitionToEditDocVC = YES; 
    } 
} 

4)在你tableVC的ViewWillAppear方法,那麼你檢查shouldTransitionToEditDocVC,如果它被設置爲YES你執行editDocVC的segue。

我希望這有助於!

+0

好吧,但我應該如何加載我的listDocsVC從previewDocVC?如果做模式轉換,那麼我也沒有我的導航欄。推送它會產生這樣的錯誤「只有在源控制器由UINavigationController實例管理時,才能使用Push segues。」 – Anth0 2013-05-13 09:26:36

+0

查看我編輯的答案,並讓我知道! – micantox 2013-05-13 10:03:52

+1

我重新編輯了我的答案,這次它應該是正確的路! – micantox 2013-05-13 10:44:28

相關問題