2012-01-29 39 views
1

在segue切換到另一個viewcontroller之後,是否可以與視圖控制器進行通信? 我想知道,因爲我是從上到下的ViewController通過一個視圖控制器需要的數據,iphone - 在segue後與之前的視圖控制器進行通信

但我只是無法弄清楚如何從一個視圖控制器獲取數據到另一個,因爲它們沒有唯一的名稱或東西我可以用它來溝通。

那麼有人可以告訴我: 如果有可能在viewcontrollers之間進行通信,並且如果可能的話,如何?

回答

1

I have searched for tutorials about making a MVC based iPhone app, but without success

轉到ITunesU和斯坦福大學找保羅Hegartys 「iPad和iPhone應用開發」

非常好!

+0

真棒,謝謝!我會檢查出來的! – laarsk 2012-01-29 23:59:31

+0

我現在正在上課,我已經學到了很多東西!非常非常感謝你! – laarsk 2012-01-30 12:51:23

2

通常情況下,您會以相反的方式將值從源地址推送到目標地址。如果您在將要segue'd出視圖控制器實現prepareForSegue,您可以使用

[segue destinationViewController] 

才能到目的地視圖控制器的參考。 然後,您可以在該控制器中使用該控制器上的屬性來設置該控制器中的任何值,然後再繼續。

+0

嗯,這聽起來不錯。但是沒有辦法與之前的視圖控制器進行通信? (我實際上已經使用了prepareForSegue方法,所以我知道它的作品:)) – laarsk 2012-01-29 15:38:49

+0

您可以隨時在目標視圖控制器上放置一個UIViewController *屬性,並使用上述技術將對舊控制器的引用加入其中。然後你可以使用該屬性返回到前一個UIViewController。問題是,在使用ARC時,最終可能會有一個循環引用,因此很可能使其變弱。 – 2012-01-29 15:42:26

+0

恩,我不知道該怎麼做,你能舉個例子嗎?此外,當我嘗試這樣做:「[[segue destinationViewController] setUserName]」我得到的錯誤:選擇器setUserName沒有已知的實例方法,這是什麼意思? – laarsk 2012-01-29 15:48:12

1

嘗試viewsViewController屬性的視圖。

+0

我其實已經試過了,但出於某種原因,我無法訪問該視圖控制器的任何函數/方法?呈現視圖控制器是具有一些自定義函數的類ViewController,但是當我嘗試使用'[self'來訪問這些函數時。presentsViewController customMethod]'我得到的錯誤,找不到方法? – laarsk 2012-01-29 15:44:24

+0

我認爲你必須投入到你的課堂,使用你的自定義方法 – mica 2012-01-29 15:47:49

+0

我不確定你的意思,在這裏,你能解釋一下嗎? – laarsk 2012-01-29 15:48:52

1

典型OOP圖案是創建另一個目的,一個模型對象(MVC範例中),連接需要與此模型對象進行通信的所有視圖控制器,並通過在設置和獲取屬性傳遞任何共享狀態或變量這個Model對象。對於非常小的應用程序來說,一個通用的捷徑是將App Delegate用作Model對象,因爲任何其他控制器都可以獲得對應用程序委託的引用。但是這個快捷方式對於較大或可重用的代碼並不是很有效。

+0

我不明白你在說什麼,但我明白它是關於MVC編碼的一些原則,所以有什麼你可以參考我(或只是解釋我)瞭解更多關於此?我對App Delegate並不熟悉(說實話,我甚至不知道它是什麼或它的用途),我也不知道通過創建模型對象意味着什麼。我已經搜索了關於製作基於MVC的iPhone應用程序的教程,但沒有成功... – laarsk 2012-01-29 16:54:07