2016-03-15 48 views
1

我想在我的iOS應用程序(swift 2)中實現委託,但得到錯誤「從類'UIViewController'和'AppDelegate'的多繼承。我從一個空白的swift文件創建了一個新的MyAppDelegate,並得到了相同的錯誤(但是使用'MyAppDelegate')。對於MyAppDelegate.swift的代碼如下:iOS中的多繼承和AppDelegate(swift)

import Foundation 
import MediaPlayer 

class InstatunesAppDelegate {  
} 

我在這裏實現它,得到的錯誤:

class myViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, InstatunesAppDelegate { 

我仍然試圖環繞代表我的頭......如何MyAppDelegate超類?如果我在AppDelegate中定義協議和委託,如何在其他類中調用它們?任何幫助表示讚賞。在此先感謝...

+0

請解釋你如何嘗試使用代表。什麼想要使用委託,它會調用委託的功能?你使用協議來定義委託需要做什麼,然後一個類符合該協議。請注意,你不應該給應用程序委託額外的責任,它應該只是應用程序委託,沒有別的...... – Wain

+2

在swift中沒有多重繼承。 'InstatunesAppDelegate'必須是一個協議。 – vikingosegundo

+0

冒號後面的_first_項可以是一個類。其餘的必須是協議。 InstatunesAppDelegate是一個類,而不是協議。 – gnasher729

回答

1

原來我是真的之後更是一個全球性的委託,成立於AppDelegate.swift和在我調用任何類可用:

let delegate = UIApplication.sharedApplication().delegate as! AppDelegate 

感謝那些誰回答...

0

Swift不支持多類相關。您繼承了一個類和其他協議。

0

不允許多次繼承。如果你仔細檢查你的ViewController類,那麼你可以看到它實際上是從UIViewController類繼承而來的,其他人(UITableViewDelegate,UITableViewDataSource)實際上是協議。這意味着ViewController類確認這些協議不會被繼承。如果你想這樣做,則InstatunesAppDelegate之前,只需要改變「階級」,並把它命名爲「協議」像波紋管:

protocol InstatunesAppDelegate{ 

} 

爲了更好地理解結賬這個環節protocol