我创建了一个名为 UnderlinedUITextField 的扩展程序。我试图在另一个类的UITextField上调用它的唯一函数加下划线,但是我收到错误类型'UITextField'的值没有成员'加下划线'。
我按照我在网上找到的一个例子,它对他们很有效。我不知道为什么我会收到这个错误。
UnderlinedUITextField扩展
import UIKit
extension UnderlinedUITextField {
func underlined() {
let border = CALayer()
let width = CGFloat(1.0)
border.borderColor = UIColor.lightGray.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
}
HomeScreenVC
import UIKit
class HomeScreenVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
titleOfArticleTextField.underlined() <- WHERE I GET THE ERROR MESSAGE
}
//MARK: Properties
@IBOutlet weak var titleOfArticleTextField: UITextField!
@IBOutlet weak var authorTextField: UITextField!
@IBOutlet weak var bulletPointTextField: UITextField!
@IBOutlet weak var previewOfImage: UIImageView!
@IBOutlet weak var uploadImage: UIButton!
答案 0 :(得分:1)
您的扩展程序应该是UITextField
而不是UnderlinedUITextField
您希望扩展现有的类以获得新方法。
答案 1 :(得分:0)
您的titleOfArticleTextField
是正常的UITextField
,因此您不知道您已将underlined
添加到UnderlinedUITextField
尝试更改您的扩展程序,使其扩展为UITextField
:
extension UITextField {
func underlined() {
let border = CALayer()
let width = CGFloat(1.0)
border.borderColor = UIColor.lightGray.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
}
希望有所帮助。
答案 2 :(得分:0)
看起来UnderlinedUITextField
是使用UITextField
扩展的控件,所以我的猜测是变量titleOfArticleTextField
的类型应该是UnderlinedUITextField
而不是UITextField
:
@IBOutlet weak var titleOfArticleTextField: UnderlinedUITextField! // <-- Check type here
这应该可以解决错误,并找到方法。
由于您的扩展程序是为UnderlinedUITextField
定义的,因此您可以安全地将下划线功能仅调用UnderlinedUITextField
类型的文本字段,并且它不适用于{{1}类型输入。
答案 3 :(得分:0)
您的扩展名必须为 UITextField 。
因为扩展名称表示扩展了该特定类的功能。现在,如果要为UITextField类添加更多功能,则必须创建名为UITextField的扩展。