2014-09-02 98 views
1

在我的一個Objective-C類中,我有一個UIViewController<UIProfileListHeaderDelegate>類型的屬性,我將如何在Swift中表示該屬性?我需要訪問UIViewControllerUIProfileListHeaderDelegate的屬性和方法。Swift - 屬性類型和協議

謝謝!

+0

其實我試過,但我可能沒有做正確的搜索。我想過使用泛型,但似乎並非如此。我也嘗試創建一個typealias,但我找不到它的正確語法。 – 2014-09-02 12:53:52

+1

看起來像http://stackoverflow.com/questions/25172430/how-to-declare-a-property-of-a-particular-class-which-is-also-protocol-conforman的重複,雖然沒有好的答案那裏。其實問題似乎不容易通過谷歌搜索 – 2014-09-02 13:05:07

+0

@codingVoldemort你有什麼想法嗎? – 2014-09-02 13:36:34

回答

4

處理此問題的快速方法是定義一個協議,其中包含從UIViewController開始的相關方法,並讓您的UIProfileListHeaderDelegate繼承該協議。

定義與自己關心的方法的協議:

protocol ViewControllerSubset { 
    var view:UIView! 
} 

聲明一個UIViewController中實現了協議,並不需要實際執行任何東西,因爲它已經存在

extension UIViewController : ViewControllerSubset {} 

繼承你的協議從那

protocol UIProfileListHeaderDelegate : ViewControllerSubset 

而你走了。

如果你不想改變你的協議的層次結構(或不能因爲它是一個系統協議),您可以定義包含兩個協議的協議)

protocol EquatableAndComparable : Equatable, Comparable { }