2013-01-01 87 views
1

我有一個應用程序創建從Xcode 4.5的樣板Master-Detail應用與CoreData,StoryBoards和ARC打開,不調用prepareForSegue。 CoreData目前未被使用,但它將緩存XML響應。 performSegueWithIdentifier的作品,但prepareForSegue不是,我有麻煩傳遞/訪問數據從MasterViewController到/由performSegueWithIdentifier創建detailViewController。performSegueWithIdentifier替換detailViewController的作品,但prepareForSegue不叫

我的基本設置與線程中討論的類似:Storyboards and UISplitViewControllers。第三頁有一個故事板圖像,與我的設置非常相似(我沒有足夠的代表發佈圖像)。

一言以蔽之:

  1. 我創建一個標準的SPLITVIEW安排
  2. 的MasterViewController建立主表
  3. 每個單元格對應於返回的XML數據,確定什麼是在的DetailView
  4. 一個網址
  5. 使用NSXMLParser操作來分析提取的XML /類
  6. 提取的XML確定需要哪個詳細信息視圖,MasterViewController調用應用程序ropriate「替換」賽格瑞(經由performSegueWithIdentifier)開球相應detailViewController以顯示所獲取的XML

即我有是,prepareForSegue不被調用的問題,所以無法通過將XML提取到detailViewController。

我需要的是下列之一:

  • prepareForSegue要執行
  • 一個知道segue.destinationViewController內handleLoadedResponse方式:通知符
  • 一種方式來獲得進入「currentResponse」 MasterViewController中的變量來自detailViewControllers的viewDidLoad方法
  • 一種通過其StoryBoardID查找MasterViewController的方法

我已經試過什麼:

  • 把的NSLog()語句中的每一個的viewController的prepareForSegue - 他們都不叫
  • 通過在detailViewController的self.parentViewController鏈挖掘發現,叫MasterViewController performSegueWithIdentifier - 我無法找到我正在尋找的類變量
  • 閱讀幾乎所有「prepareForSegue not called」後我可以找到 - 他們都似乎由於一些編碼/故事板錯誤,我沒有看到在我的代碼/故事板

可能的問題是我打電話:

[self.navigationController performSegueWithIdentifier:@"theDesiredSegue" sender:self]; 

從handleLoadedResponse內:通知符回撥和應用程序試圖調用prepareForSegue在我的分析對象?

TIA

回答

2

嗯,這粉筆最多的代碼過長和/或新手岬盯着。

經過三重檢查我明顯看到的所有內容後,我認爲唯一剩下的就是segue代碼在NSXMLParser回調中沒有正確行爲,所以我切換了handleLoadedResponse:notif例程來存儲解析數據和發出通知。

在調試這些變化,我意識到,我的塞格斯被裝錯了對象。他們實際上是附加到navigationController而不是我的viewController。從外表上看,情況看起來像是RWForums: Storyboards and UISplitViewControllers第3頁的故事板,但它們確實不是。最終的結果是,即使它看起來像我的代碼在呼喚performSegueWithIdentifier而且它的prepareForSegue方法應該被調用時,它實際上是調用navigationController的SEGUE,所以navigationController的繼承prepareForSegue被調用。

建議:確保在打開文檔大綱的情況下重新檢查StoryBoard編輯器中的所有連接。

相關問題