I can get the WKInterfacePicker
to call pickerDidSettle
, but how can I get the index of the selected item?
@IBAction override func pickerDidSettle(picker: WKInterfacePicker) {
print("Picker settled to index: \(picker)")
}
I can get the WKInterfacePicker
to call pickerDidSettle
, but how can I get the index of the selected item?
@IBAction override func pickerDidSettle(picker: WKInterfacePicker) {
print("Picker settled to index: \(picker)")
}
Each time the picker value changes, the WKInterfacePicker object reports the change to its associated action method. The format of this action method is as follows:
OBJECTIVE-C
-(IBAction)pickerAction:(NSInteger)index
SWIFT @IBAction func pickerAction(index: Int)
You can use the action method’s index value to obtain the selected item from the array of items you used to configure the picker. The picker reports every change to its action method, regardless of how fast the user turns the Digital Crown. If your app should respond only to the item that the user selected, use the pickerDidSettle: method of WKInterfaceController to get the selected item instead.
What I did to solve this
Create in .h file
NSInteger PickerIndex;
swift
var PickerIndex: Int
Then in my .m
- (IBAction)pickerAction:(NSInteger)index {
PickerIndex = index;
}
swift
@IBAction func pickerAction(index: Int) {
PickerIndex = index
}
* Don't forget to link the IBAction in Interface Builder
And then use it in pickerDidSettle method
-(void)pickerDidSettle:(WKInterfacePicker *)picker{
NSLog(@"Selected Index: %ld",(long)PickerIndex);
}
swift
func pickerDidSettle(_ picker: WKInterfacePicker) {
print(PickerIndex)
}