2013-09-23 57 views
0

我想調用另一個viewcontroller的方法說已經初始化的HeyViewController。我將如何通過重新初始化該視圖控制器的新實例來調用它的方法?調用已經初始化的另一個viewcontroller的方法

例如HeyViewController * hey = [[HeyViewController alloc] init]; [嗨showMe];

是不好的,因爲它初始化視圖控制器,當它已經初始化。

所以是的,我該怎麼做?

編輯:

對不起,目前尚不清楚。由於該應用程序正在使用情節提要,因此有問題的視圖控制器已在該視圖控制器之前初始化。所以viewcontroller正在運行,但該viewcontroller的一個實例不在當前視圖控制器中。

回答

1

只要在您已經實例化的任何HeyViewController實例上調用showMe。

+0

對不起,我可能沒有正確解釋。當前視圖控制器沒有該視圖控制器的實例。它已初始化,因爲要轉到您通過目標視圖控制器傳遞的當前視圖控制器。 –

+0

視圖控制器不會「有[某個其他]視圖控制器的實例。」它們存在或不存在。問題是獲取指向現有視圖控制器的指針。 –

+0

如果您嘗試訪問的VC是您正在訪問的VC的父*,那麼您可以簡單地獲取當前VC的parentViewContoller屬性。如果沒有,您可能需要從根控制器開始,遍歷控制器層次結構以找到您想要的。看看[這個問題](http://stackoverflow.com/questions/6131205/iphone-how-to-find-topmost-view-controller)爲一般的想法。 – NRitH

1

您面臨的問題是您如何獲得指向現有視圖控制器的指針。爲了回答這個問題,你需要考慮如何創建其他視圖控制器。

什麼是視圖控制器的流程?誰創建你的「嘿」視圖控制器?您需要訪問「嗨」視圖控制器的視圖控制器是否可以訪問創建「嗨」視圖控制器的視圖控制器?

如果答案是肯定的,那麼讓創建「嘿」視圖控制器的視圖控制器在它的prepareForSegue方法中保存一個指向它的指針。然後在創建視圖控制器的時候請求一個指向「嘿」視圖控制器的指針。

如果您的第三個視圖控制器無權訪問「嘿」視圖控制器的創建者,那麼您的「嗨」視圖控制器中是否只有一個實例?

如果您確定只有一個「Hey」視圖控制器實例,那麼在您的「Hey」視圖控制器中添加一個「currentHeyViewController」類方法。添加一個私人的全球「gCurrentHeyVC」到「嘿」VC的標題。在currentHeyViewController類方法中返回全局值。在你的init方法中設置global,並在你的dealloc方法中使用全局變量。

編輯:正如@gWiz在下面指出的,上面的最後一個選項是如何將「嘿」視圖控制器變成單例的簡單描述。

+0

您的最後一段是「如何製作單件」問題的最快指南。+ 1 – gWiz