2012-03-11 129 views
0

在這一點上,我有一個相當複雜的應用程序,感覺好像我處理數據的方式沒有達到要求。如何在視圖控制器之間傳遞數據

所以我開始採取一些措施讓我的應用程序更友好。 其中的第一個,我已經從我的所有ViewController中的內聯分析器方法變爲創建專用分析器類。

它不難調用我只是設置類,然後調用我所做的傳遞數據的初始化方法我的請求..在我的對象類中的一切工作甜蜜我得到一大堆返回數據我正在解析的服務器..但是這是我得到升技丟失的地方。

如何將數據返回給調用它的ViewController?我對協議和委託做了一些工作......但我不知道這將如何適應這一點。

下面是我嘗試實現的一個圖形化示例。

Passing data between views

所以如上視圖控制器調用它連接到DB中的對象類中的初始化方法下載數據,然後分析該數據。我遇到的問題是,我如何才能將數據提取到ViewController2 ..

什麼是最合適和未來的證明方式?

回答

3

自定義 - init方法確實有奇效。例如,我需要實例化並從前一個屏幕中推送一個預加載數組的選擇器,因此我在第二個視圖中定義了-(id)initWithArray:(NSArray*)array,然後只是調用secondView = [[SecondView alloc]initWithArray:_population];,然後將其推送。請記住,在您釋放並銷燬之前獲取您傳遞的任何對象的所有權!

+0

通過獲取所有權,你有什麼感受?..感謝您的迴應,現在就試用它。 – 2012-03-11 21:40:13

+1

就像,當你傳遞數組時,你在技術上並不擁有它,所以在第二個視圖中,你必須設置一個新的NSArray對象,該對象等於方法中傳遞的對象。 – CodaFi 2012-03-11 21:41:15

+0

好完美..雖然是這樣,但想確保。好吧謝謝你的答案將標記一次的時間到了:) – 2012-03-11 21:50:34

0

如果你想從你的對象向所有視圖控制器廣播數據,這樣做的好方法是通過通知(NSNotificationCenter)。您也可以在分析器對象中編寫一個帶有完成塊的方法。

0

嘗試使用NSNotificationCenter發送本地通知。將您的ViewController2註冊爲偵聽器,然後在收到通知後,調用您的數據模型(singleton !?)作爲數據。

+0

我不喜歡NSNotificationCenter相當於代表團......它提醒不得不接受不可靠的發送事件在刮傷語言...和那麼如果你忘記了事件的關鍵是什麼,你必須去挖掘它... – CodaFi 2012-03-11 21:37:27

+0

但這就是爲什麼NSNotificationCenter在那裏的確切目的。除非你想做一個單身視圖控制器(壞習慣),否則你會想要使用它。 – 2012-03-11 21:39:03

相關問題