2016-07-08 60 views
0

我來自Android背景,我是Swift新手。 我想知道如何使用DRY原則在ViewControllers中使用常用函數。Swift:UIViewController通用函數繼承

我需要所有我ViewControllers的從一個地方撥打以下功能:

  1. isNetworkAvailable()//檢查應用程序具有Internet返回布爾

  2. getLoggedinUser()//返回登錄用戶對象我設置之前

  3. showAlert(消息:字符串)//顯示彈出

  4. startLoader()//顯示裝載機

  5. stopLoader()//停止裝載機

正如你可以看到這些方法是全球性的,我需要重新使用它們很多次。所以我不想複製粘貼相同的代碼。

在Android中,我只需製作一個BaseActivity並將所有這些方法放入其中。之後我會將BaseActivity擴展到SubActivities並繼承這些常用方法。

我不知道如何在「IOS Swift」中做到這一點,因爲所有ViewController都連接到StoryBoard上。

你能告訴我什麼是達到此目的的最佳方法?專業的Swift開發人員如何處理這種情況?

(請注意 - 我不想刪除故事板和手動創建UI元素)

先謝謝了!

+3

創建另一個swift文件。在該swift文件中導入UIKit和必要的模塊。寫一個公共課。將這些變量和函數聲明爲public。用那個className.functionName把它們叫做你需要的地方。 – Dershowitz123

+0

你的意思是,添加公共靜態方法?我是否需要擴展任何類似NSObject的Swift類? –

+0

繼承其中似乎對你合法。 NSObject的繼承只會讓你的類Objc類。這不是一個問題。只是說。 – Dershowitz123

回答

1

創建一個CommonFunctions名爲公共類(只是一個建議,你可以將其命名爲您想要的任何類名)從NSObject的擴展它,並import UIKit模塊中,因爲我想你也希望它像startLoader() & stopLoader()執行UI操作,那麼您可以編寫你在問題中提到的靜態全局方法。

您可以使用CommonFunctions.methodName()撥打電話。

或者,如果您不想創建靜態函數,則可以在需要訪問這些全局方法並調用所需方法的地方創建類對象CommonFunctions