         }
     }
     
-    private func selectionDidChanged() {
+    open func reloadData() {
         
         let reusing = self.contentView.subviews.first
         reusing?.removeFromSuperview()
         
-        if 0..<numberOfRows ~= selectedRow, let view = self.delegate?.pickerView(self, viewForRow: selectedRow, reusing: reusing) {
+        if 0..<numberOfRows ~= selectedRow, let view = self.delegate?.viewToPresent(in: self, reusing: reusing) {
             
             self.contentView.addSubview(view)
             view.translatesAutoresizingMaskIntoConstraints = false

    private let contentView = UIView()
    private let button = UIButton(type: .custom)
    
    public weak var delegate: SDPickerViewDelegate? {
        didSet {
            self.selectionDidChanged()
        }
    }
    
    public weak var dataSource: SDPickerViewDataSource? {
        didSet {
            self.selectionDidChanged()
        }
    }
    

    
    func rowHeight(in pickerView: SDPickerView) -> CGFloat
    
    func viewToPresent(in pickerView: SDPickerView, reusing view: UIView?) -> UIView
    
    func pickerView(_ pickerView: SDPickerView, titleForRow row: Int) -> String?
    
    func pickerView(_ pickerView: SDPickerView, attributedTitleForRow row: Int) -> NSAttributedString?
