Search code examples
iosobjective-cswiftuipickerview

UIPickerView setter in Swift


I am trying to write a setter method for UIPickerView which will be created from my IBOutLet. In Objective C it was pretty straight forward but in Swift it has changed a bit. The setter method never gets executed.

My Current implementation in swift:

class PickerController: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {

@IBOutlet var pickerView: UIPickerView!

var _pickerView: UIPickerView! {

    get {
        return self._pickerView
    }
    set {
        self.pickerView = _pickerView
        self.pickerView.delegate = self
        self.pickerView.dataSource = self
        self.pickerView.reloadAllComponents()
    }
}

But if I do in Objective C following method can be declared on the outlet.

- (void)setPickerView:(UIPickerView *)pickerView {
   _pickerView = pickerView;
   _pickerView.delegate = self;
   _pickerView.dataSource = self;
   [_pickerView reloadAllComponents];
}

How can I achieve the setter method in Swift ?


Solution

  • Try something like this:

    var pickerView: UIPickerView! {
        didSet {
            self.pickerView.delegate = self
            self.pickerView.dataSource = self
            self.pickerView.reloadAllComponents()
        }
    }