I am trying to create a Swift extension of UIColor class as
extension UIColor {
func getCustomBlueColor() -> UIColor {
return UIColor(red:0.043, green:0.576, blue:0.588, alpha:1.00)
}
}
After this I accessed the method as
btnShare.setTitleColor(UIColor.getCustomBlueColor(**UIColor**), forState: UIControlState.Normal)
I don't know what I should pass as an argument to this statement.
You have defined an instance method, which means that you can call
it only on an UIColor
instance:
let col = UIColor().getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor().getCustomBlueColor(), forState: .Normal)
The compiler error "missing argument" occurs because Instance Methods are Curried Functions in Swift, so it could equivalently be called as
let col = UIColor.getCustomBlueColor(UIColor())()
(But that would be a strange thing to do, and I have added it only to explain where the error message comes from.)
But what you really want is a type method (class func
)
extension UIColor{
class func getCustomBlueColor() -> UIColor{
return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
}
}
which is called as
let col = UIColor.getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor.getCustomBlueColor(), forState: .Normal)
without the need to create an UIColor
instance first.