9

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)")
}
RawMean
  • 8,374
  • 6
  • 55
  • 82

2 Answers2

7

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.

Source Link

UPDATED SOURCE LINK

Muneeba
  • 1,756
  • 10
  • 11
  • The quoted text is no longer at the source link. Try this link: [link](https://developer.apple.com/library/content/documentation/General/Conceptual/WatchKitProgrammingGuide/Picker.html) – ghr Apr 25 '17 at 01:58
  • 1
    However, it does not explain how to get the selected item from a Picker. – ghr Apr 25 '17 at 02:07
  • Thanks for the updated link. And its mention in the quoted text that you can use "action method’s index value to obtain the selected item from the array of items " as picker reports every change to its method. – Muneeba Apr 26 '17 at 04:35
0

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)

}
Bosoud
  • 158
  • 4
  • 24