2012-01-05 93 views
0

我有一個問題,當從iPad應用程序中的代碼調用segue時顯示視圖控制器。segue加載viewcontroller,但不顯示它

我在IB的SEGUE設置按Ctrl從一個視圖控制器拖動到其他,與

標識符:viewDocumentSegue,風格:模態,演示:默認,過渡:默認

然後我打電話使用

[self performSegueWithIdentifier:@"viewDocumentSegue" sender:nil]; 
從第一視圖控制器SEGUE

和傳遞變量使用

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    UIViewController *destination = segue.destinationViewController; 

    if ([destination respondsToSelector:@selector(setFileURL:)]) { 
     [destination setValue:fileName forKey:@"fileURL"]; 
    } 
} 

第二視圖控制器第二個視圖控制器並得到加載,因爲NSLogs我在viewDidLoad中viewWillAppear中viewDidAppear在控制檯中顯示,但沒有得到顯示。

我在想第二個視圖控制器的視圖是在視圖層次中的某個地方。但是,我怎麼強迫它到頂端?

編輯

這裏是接口(需要被塗黑了一些東西)的屏幕截圖。我已經添加了一些註釋來解釋結構。希望這會有所幫助。

(我不能上傳圖片尚未所以這裏是一個鏈接) http://www.linfoots.com/Screenshot.jpg

有什麼建議?

感謝,

理查德

+0

iPhone或iPad?什麼是相關的模態表示和模態上下文設置?你說「堆棧」 - 這一切都發生在導航控制器內部嗎? – matt 2012-01-05 16:49:53

+0

對不起,我應該更具體。我編輯了原文。這是一個iPad應用程序,我應該說視圖層次結構不堆棧。我認爲模態演示文稿是在Storyboard和Segue框架內處理的。我是新來的故事板,所以仍然試圖適應他們。 – 2012-01-05 17:01:01

+0

好吧,現在我們知道你在iPad上。還有什麼?你在一個自定義的父視圖控制器?描述故事板或顯示它的屏幕截圖。根據你所說的,沒有人能夠重現這個問題。 – matt 2012-01-05 17:16:42

回答

2

你不提供額外的信息,我問過了,所以不可能詳細回答你的問題。我建議你做的是用兩個視圖控制器創建一個全新的項目。以相同的方式將它們連接到故事板。你會看到你想要做的事實上應該工作得很好。一旦你確信自己,你可以回頭看看你遇到的項目有什麼不同。

編輯:

好的,謝謝你的屏幕截圖。看起來你正在嘗試使用與父視圖控制器相關的故事板,正如我在第二條評論中猜到的那樣。這並不容易,因爲故事板對你的父視圖控制器的孩子一無所知。使用多個故事板或者根本沒有故事板,你會更開心。

現在我們來談談使用父視圖控制器的問題。你沒有問過這個問題,但它可能是你問題的核心。這是關鍵您正確地管理子視圖控制器。請參閱討論在我的書:

http://www.apeth.com/iOSBook/ch19.html#_container_view_controllers

必須每次做這個精心設計的舞蹈,或事情不會去的權利:

當一個視圖控制器是成爲您的父視圖控制器孩子:

  • 您在您的父視圖控制器上調用addChildViewController:。該子項會自動添加到父級的childViewControllers數組中,該數組會保留它。
  • 您將子視圖控制器的視圖添加到您的界面中,如果這是添加子視圖控制器的含義。
  • 您發送didMoveToParentViewController:以父視圖控制器作爲其參數的子項。

當一個視圖控制器是停止做你的父視圖控制器的孩子:

  • 您發送willMoveToParentViewController:給孩子一個零的說法。
  • 從界面中刪除子視圖控制器的視圖,如果這是刪除子視圖控制器的意思。
  • 您將removeFromParentViewController發送給子級。孩子會自動從父母的childViewControllers數組中移除,並釋放它。

最後,當您進行模態轉換時,您父鏈中的definesPresentationContext變得至關重要,以便模態視圖知道要在界面中替換哪個視圖。從我的書,這可下載的示例演示了必要的區分:

https://github.com/mattneub/Programming-iOS-4-Book-Examples/tree/master/convertedToIOS5/p476containerController2

+0

謝謝馬特,這對我有很大的幫助。我現在有一個應用程序,實際上:)無論如何,由於什麼似乎是過於複雜的子視圖控制器的實現我已經從應用程序中刪除他們,只是模式顯示每個視圖,無論是動畫或不。最終它實際上使整個界面變得更簡單,這隻能是一件好事。 我已經瀏覽了你的iOS 5書籍,它看起來比我目前擁有的書籍更全面,並且在發佈時一定會購買一本。 再次感謝您的幫助。 – 2012-01-09 09:32:41

+0

很高興我能幫忙,但當然你必須做所有的工作。 :)對我來說,我給出的最重要的建議是「做一個簡單的項目」。我一直都在使用這種技術,向我展示* *應該如何工作,而不會增加實際應用程序的複雜性。它非常快速簡單,但很少有人嘗試。 – matt 2012-01-09 15:46:27

+0

@matt這不是宣傳亞馬遜書籍的地方,但實際上在閱讀了大約50本關於iOS主題的書籍之後,書籍遠遠不是最好的。它幫助我澄清了iOS中最重要的部分,尤其是視圖控制器概念的基礎知識。 – BootMaker 2013-12-08 15:21:37