0

I have a custom view designed in a xib file and when I add it into my View Controller programmatically everything works just fine. But if add it via storyboard (I add UIView and then subclass it, see the image here) I receive:

fatal error: unexpectedly found nil while unwrapping an Optional value in awake from nib function

Here is my code in my custom view:

class AutoCompleteTextView: UIView {

    @IBOutlet var autoCompleteTableView: UITableView!
    @IBOutlet var textField: UITextField!

    var placeholderText: String? {
        didSet {
            initUI()
        }
    }

    var searchResult = [String]() {
        didSet {
            autoCompleteTableView.reloadData()
        }
    }

    weak var delegate: AutoCompleteTextViewDelegate?

    let cellReuseIdentifier = "cell"

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(frame: CGRect) {
        let staticFrame = CGRect(x: frame.origin.x, y: frame.origin.y, width: 300, height: frame.height)
        super.init(frame: staticFrame)
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        clipsToBounds = true
        autoCompleteTableView.delegate = self
        autoCompleteTableView.dataSource = self
        autoCompleteTableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
        textField.delegate = self
        initUI()
    }

    static func newInstance(placeholderText: String) -> AutoCompleteTextView {
       guard let autoCompleteTextView = UINib(nibName: String(describing: AutoCompleteTextView.self), bundle: nil)
        .instantiate(withOwner: self, options: nil).first as? AutoCompleteTextView else {
            return AutoCompleteTextView()
        }

        autoCompleteTextView.placeholderText = placeholderText
        return autoCompleteTextView
    }

    func initUI() {[enter image description here][1]
        textField.placeholder = placeholderText ?? ""
        autoCompleteTableView.tableFooterView = UIView() //In order to do not show emty cells
        updateUI()
    }
}
Ender
  • 13
  • 4

0 Answers0