2016-05-13 71 views
0

我有BaseViewController這是兒童類UIViewController,那麼我有這個LeftViewControllerRightViewController是子類。我想創建一個函數來創建從BaseViewController聲明的導航欄按鈕項,以便我可以從子項訪問。設置UIViewController子類的按鈕目標作爲參數

問題是,爲了設置每個navbaritem的動作/選擇器,如何將子視圖控制器作爲參數傳遞給該函數?某些選擇器僅在LeftViewController中聲明或僅在RightViewController中聲明,因此編譯器會抱怨未聲明的選擇器。

謝謝。

回答

0
在BaseviewController選擇方法

您可以通過使用關鍵字的自我,因爲有運行時多態性的應用,你可以用自己的

if self.isKindOfClass(RightViewController.classForCoder()) { 
    let controller: RightViewController = self as! RightViewController 
} 
+0

我已經應用解決方案,仍然是編譯器的投訴有關未定義選擇得到Childviewcontroller ,因爲參數本身具有「BaseViewController」類型。 的代碼是: 'hamburgerView.addTarget(目標,動作:#selector(target.doHamburgerAction(_ :)),forControlEvents:UIControlEvents.TouchUpInside)'有錯誤 '類型BaseViewController的值沒有構件doHamburgerAction'。 即使我知道'target'指的是正確的類。 – Hebbian

+0

show do函數decalration doHamburgerAction函數 –

+0

'func doHamburgerAction(sender:UIButton){..}' – Hebbian

相關問題