2017-02-11 8 views
2

私は2つのポッド:DropDownSwiftyUtilsを使用しています。拡張機能は、アクセスしたいプロパティを隠します。回避策?

DropDownは、DropDownと呼ばれるUIViewサブクラスに追加されます。 DropDownクラスは独自のwidthプロパティを定義します。 frameを設定する代わりに、クライアントコードはこのプロパティを使用してドロップダウンメニューの幅を設定する必要があります。それは、このように定義されています

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

SwiftyUtilsは、他の一方で、すべてのUIView sの拡張子を追加しました。拡張機能には、widthプロパティもあります。 これは、 のプロパティは、人々が少ないコードを書くことができるように単に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のメニューの幅を設定しようとすると、問題が来ます。コンパイラは、モジュール内の拡張子に定義されたwidthプロパティを意味すると考えます。

コンパイラにwidthDropDownで、widthSwiftyUtilsではないことをコンパイラに伝えるにはどうすればよいですか?

答えて

0

この問題はちょっとした工夫で解決しました。

DropDownwidthCGFloat?であるが、SwiftyUtilswidthCGFloatです。つまり、オプションのCGFloatを渡すと、コンパイラはwidthDropDownにあると解釈します。

ので、代わりのこのやって:

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

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

を私はこれをしませんでした

関連する問題