         return componentView
     }
     
+    public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
+        let currentItems: [String] = components.enumerated().map { offset, _component in
+            let row = pickerView.selectedRow(inComponent: offset)
+            return _component.items.items[row]
+        }
+        
+        labelPickerDelegate?.didSelect(
+            item: currentItems[component],
+            inComponent: component,
+            currentItems: currentItems
+        )
+    }
+    
     func itemLabelFrame(of component: LabelPickerComponent) -> CGRect {
         return CGRect(
             x: componentSidePadding(of: component),


import UIKit

public class LabelPickerView: UIPickerView {
    
    public enum Spacing {

    let componentSeparateWidth: CGFloat = 5.0
    
    var labels: [UILabel] = []
    
    public weak var labelPickerDelegate: LabelPickerViewDelegate?
    
    public var components: [LabelPickerComponent] = [] {
        didSet {
