Tas*_*nir 5 initialization subclass uitextfield ios swift
因此,我设置了一个可以正常工作的 UITextField,但是当尝试标准化该控件以便可以在其他视图中重用它时,我似乎无法初始化它/让它像普通 UITextField 一样工作。
该变量声明为
@IBOutlet weak var searchTextField: SearchTextField!
Run Code Online (Sandbox Code Playgroud)
然后初始化并设置委托:
self.searchTextField = SearchTextField()
self.searchTextField.delegate = self
Run Code Online (Sandbox Code Playgroud)
但是当我尝试设置委托时,我得到了 EXC_BAD_INSTRUCTION 。我一直在向子类中删除和添加各种 init 方法,我当前的版本有 3 个,这可能有点过大,但它们可以阻止编译器抱怨:
import Foundation
class SearchTextField : UITextField
{
override init()
{
super.init()
}
override init(frame:CGRect)
{
super.init(frame:frame)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setPlaceholderText()
{
let searchIconCharacter: Character = "\u{1F50D}"
let searchFieldPlaceholder: String = "\(searchIconCharacter) Where to?"
self.placeholder = searchFieldPlaceholder
}
}
Run Code Online (Sandbox Code Playgroud)
我确信我的快速语法很糟糕,所以我应该更正的任何其他内容都请告诉我。有什么原因导致 SearchTextField 未设置,初始化后它仍然为零?这是否与 IBOutlet 较弱有关?
虽然我的可怕代码存在多个问题,但最终的解决方案是将故事板中的 UITextField 更改为 SearchTextField。当然,亚伦也说得对,我错误地覆盖了故事板创建的实例。
归档时间: |
|
查看次数: |
7094 次 |
最近记录: |