2012-02-01 43 views
2

鑑於基於故事板的應用程序,如何任何一個可以視圖控制器調用的方法的任何其他(以訪問其封裝的信息),而不執行prepareForSegue方法(其僅通過通過segue參數的目標vc的引用)?我知道信息可以從父vc傳遞給子vc,但我需要更通用的方法來讓任何vc在任何時間點將信息傳遞給任何其他人。換句話說,在vc A中,我想在vc B中調用一個方法(它不是從A的任何一個segue中命名的),但是不明白如何從A中獲得對B的引用。創建一個新的segue會創建一個新的vc;不是我想要做的。任意通信故事板爲基礎的應用

我會認爲這是通過故事板或其關聯命名賽格瑞功能的一些方式來跟蹤從任何其他任何VC的參考,但一直在努力找到一個方法來做到這一點。在我通常居住的深度嵌入式世界中,我只是簡單地創建一個單例類,以便它可以從任何地方實例化,但對於視圖控制器來說,這似乎是不恰當的(如果可能的話)。

任何幫助將不勝感激。

回答

2

我建議你不要試圖通過故事板segue功能做到這一點。嘗試使用NSNotifications。您必須自己編寫這些代碼(即不是在Storyboard中),但它們將允許您根據您在通知中傳遞的信息來廣播VC-B調用方法的「請求」。 VC-B必須傾聽它(觀察),但這是解耦你的類的一種非常好的方式,但仍然以任意方式進行通信。

+0

感謝您的及時和直接的迴應。我曾考慮過使用通知作爲可行的候選人,並且過去肯定會使用它們。我還考慮創建一個單例類,它只需保存所有可以在任何地方實例化的vc引用地址。再次感謝您分享您的建議。 – 2012-02-01 15:49:19

+0

你的單身人士與所有VS的參考違反了鬆耦合,所以我也會避免這種情況。我知道我一直對此感到擔憂,但是每當你將兩個或更多的課程聯繫在一起時,你應該有一個非常好的理由。 – Rayfleck 2012-02-01 16:27:00

+0

點好了;再次感謝。 – 2012-02-01 16:34:21