2017-02-11 29 views
2

我使用兩個吊艙:DropDownSwiftyUtils擴展隱藏了我想要訪問的屬性。解決方法?

DropDown在稱爲DropDownUIView子類中增加。 DropDown類定義了它自己的width屬性。客戶端代碼不必設置frame,而必須使用此屬性設置下拉菜單的寬度。它的定義如下:

public var width: CGFloat? { 
    didSet { setNeedsUpdateConstraints() } 
} 

SwiftyUtils在另一方面,加入的擴展,所有UIView秒。在擴展中,還有一個width屬性。 Thiswidth property is simply returned frame.width,這樣人們可以編寫更少的代碼。它的定義是這樣的:

public var width: CGFloat { 
    get { return frame.width } 
    set { frame = frame.with(width: newValue) } // frame.with() is defined in SwiftyUtils as well 
} 

問題是當我嘗試使用DropDwon定義的width屬性設置DropDown的菜單寬度。編譯器認爲我的意思是SwiftyUtils模塊擴展中定義的width屬性。

我該如何告訴編譯器,我的意思是widthDropDown,而不是widthSwiftyUtils

回答

0

我通過一個小技巧解決了這個問題。

DropDownwidthCGFloat?類型的,但在SwiftyUtilswidthCGFloat類型。這意味着如果我通過一個可選的CGFloat,編譯器會明白我的意思是widthDropDown。的

所以不是這樣:

let menuWidth = <insert calculation here> 
menu.width = menuWidth 

我這樣做:

let menuWidth = <insert calculation here> 
menu.width = menuWidth as CGFloat?