2016-08-18 60 views
1

如何區分Swift 3中具有相同名稱的類成員的實例成員?什麼是前通常現在的工作在Xcode中產生誤差8的測試版5:在Swift 3中區分具有相同名稱的實例成員的類

「靜態成員‘文字顏色’不能在類型UITag的情況下被使用」

public class UITag : UILabel { 

    static var textColor = UIColor.white 

    override public init(frame: CGRect) { 
     super.init(frame: frame) 

     textColor = UITag.textColor /* error: static member cannot be used on instance of type UITag */ 
     text  = " not set " 
    } 
} 
+0

消除靜電,並嘗試一次 –

+0

注意添加明確self.textColor = UITag.textColor不幫助 –

+0

@ Anbu.Karthik:靜態不是實例的成員。 –

回答

0

這是一個奇怪的錯誤,我們可以討論它是否是一個它實際上是允許陰影沒有一個編譯器錯誤帶有靜態變量的n-static變量,但請注意,具有相同名稱的兩個屬性絕對是錯誤的代碼,一個是靜態的,另一個不是靜態的,因爲最後一個會覆蓋前一個。可能defaultTextColor將是一個更好的名字。

一個簡單的解決方法是使用:

super.textColor = ... 
0

好,唯一的解決方法我到目前爲止,已經找到是顯式轉換自我如下:

(self as UILabel).textColor = UITag.textColor 
0

textColor是一個靜態變量,它不能被改變。您只能使用它的值爲UITag.textColor

super.textColor = UITag.textColor這基本上是再次調用父類的實例變量,它類似於txtColor在下面的例子

public class UITag : UILabel { 

    static var textColor = UIColor.white 
    var txtColor = UIColor.red 

    override public init(frame: CGRect) { 
     super.init(frame: frame) 

     super.textColor = UITag.textColor 
     txtColor = UITag.textColor 
    } 
} 
相關問題