有没有办法从界面生成器自动设置 UITextfield 委托?
is there a way to automatically set UITextfield delegate from interface builder?
在界面生成器中将 UITextfield 添加到控制器时,有什么方法可以让文本字段的委托 属性 自动设置为放置 UITextfield 的控制器?
Select TextField,按住 Control 键并拖动线到 ViewController,释放并 select 委托。
有自动设置的方法:
覆盖文本字段的 awakeFromNib 方法,获取它 viewController,检查协议一致性并将文本字段委托设置为此 vc。
extension UITextField {
open override func awakeFromNib() {
if let vc = self.getViewController() as? UITextFieldDelegate {
self.delegate = vc
}
}
}
这是 UIView 的扩展,用于通过响应链查找父 viewController:
extension UIView {
func getViewController() -> UIViewController? {
return (self.next as? UIViewController) ?? (self.next as? UIView)?.getViewController()
}
}
在界面生成器中将 UITextfield 添加到控制器时,有什么方法可以让文本字段的委托 属性 自动设置为放置 UITextfield 的控制器?
Select TextField,按住 Control 键并拖动线到 ViewController,释放并 select 委托。
有自动设置的方法:
覆盖文本字段的 awakeFromNib 方法,获取它 viewController,检查协议一致性并将文本字段委托设置为此 vc。
extension UITextField {
open override func awakeFromNib() {
if let vc = self.getViewController() as? UITextFieldDelegate {
self.delegate = vc
}
}
}
这是 UIView 的扩展,用于通过响应链查找父 viewController:
extension UIView {
func getViewController() -> UIViewController? {
return (self.next as? UIViewController) ?? (self.next as? UIView)?.getViewController()
}
}