     
     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?
-    
-    func pickerView(_ pickerView: SDPickerView, viewForRow row: Int, reusing view: UIView?) -> UIView
-    
-    func pickerView(_ pickerView: SDPickerView, didSelectRow row: Int)
+    func pickerView(_ pickerView: SDPickerView, titleForHeaderInSection section: Int) -> String?
+    
+    func pickerView(_ pickerView: SDPickerView, titleForFooterInSection section: Int) -> String?
+    
+    func pickerView(_ pickerView: SDPickerView, titleForRow indexPath: IndexPath) -> String?
+    
+    func pickerView(_ pickerView: SDPickerView, attributedTitleForRow indexPath: IndexPath) -> NSAttributedString?
+    
+    func pickerView(_ pickerView: SDPickerView, viewForRow indexPath: IndexPath, reusing view: UIView?) -> UIView
+    
+    func pickerView(_ pickerView: SDPickerView, viewForPresentInRow indexPath: IndexPath, reusing view: UIView?) -> UIView
+    
+    func pickerView(_ pickerView: SDPickerView, didSelectRow indexPath: IndexPath)
 }
 
 @available(iOS 11.0, *)

        
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        
        cell.accessoryType = self.delegate?.selectedRow == indexPath.row ? .checkmark : .none
        
        if let picker = self.delegate {
            
            let reusing = cell.contentView.subviews.first
            reusing?.removeFromSuperview()
            
            if let view = picker.delegate?.pickerView(picker, viewForRow: indexPath.row, reusing: reusing) {
                
                cell.contentView.addSubview(view)
                view.translatesAutoresizingMaskIntoConstraints = false

        
        guard let delegate = self.delegate else { return }
        
        delegate.selectedIndex = indexPath
        tableView.selectRow(at: nil, animated: false, scrollPosition: .none)
        
        for cell in tableView.visibleCells {
            guard let indexPath = tableView.indexPath(for: cell) else { continue }
            cell.accessoryType = delegate.selectedIndex == indexPath ? .checkmark : .none
        }
        
        delegate.sendActions(for: .valueChanged)
