2016-07-23 87 views
0

我認爲這個解決方案需要使用委託,但我不熟悉如何使用它們。 所以在我的項目中,我有我的主viewcontroller/storyboard,其中包含UIScrollView。那UIScrollview調用另一個故事板(xib file)作爲子視圖。另一個故事板(這是一個xib file)由另一個swift文件控制。在swift中從不同的視圖控制器調用函數

我的問題是,當我在其他故事板中調用動作時,如何從主viewcontroller調用一個函數。比如說從第一個viewcontroller開始viewdidload。 我不能使整個事物成爲一個全局函數,它需要留在它的類中。所以如果我試圖做ViewController.viewDidLoad()它需要(我認爲)一個實例變量或其他東西。

謝謝。

回答

0

你可以試試:

  1. 類型爲UIViewController中
  2. 其他類使用弱變量(屬性)另一種觀點初始化後父視圖控制器分配給該屬性

良好的讀取關於弱,強,無主基準HereHere

0

首先,如果你想c所有與類名稱一樣,如上所述,用「class」聲明您的方法。所以它就像Java中的靜態一樣。它使得它在你的項目中的任何地方稱爲通用的。做一個單獨的擴展。

class func myfunc(){ 
} 

如果您想要將數據從B發送到A控制器。你使用所謂的委託。您將B的工作交給A.爲B上的協議創建您想要執行或與之一起發送的函數。在B中調用它們,然後在A中爲這些函數編寫代碼。因此,您將數據從B傳送到A

否則您需要類似普通數據的東西。在那裏創建一個單例類並初始化屬性方法。您可以使用對象並在其他控制器中調用它來修改或製作不同的實例。

你不叫viewDidLoad()。正如名字所說,它加載一次。如果您希望每次出現屏幕時都要修改某些內容,請使用viewWillAppear

+0

我知道我可以這樣做,使靜態方法成爲可能。但在我的情況下,我想調用的方法需要靜態需要有一個UIScrollview連接到它。如果它不在課堂上,那不會發生。對?我不知道如何解決這個問題。 – acday

相關問題