From 62cbdceeddb63d41018be77f07b54d10355cad57 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 7 Oct 2019 04:22:25 -0700 Subject: [PATCH] Implement setNativeSelectedIndex command for Picker component Summary: This is required so we can switch to using commands instead of `setNativeProps`. `setNativeProps` are not supported in Fabric, we are moving away from it. Reviewed By: JoshuaGross Differential Revision: D17764967 fbshipit-source-id: 16e54ebe1f0c58b80a6491db970a60c01fec8a15 --- React/Views/RCTPickerManager.m | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/React/Views/RCTPickerManager.m b/React/Views/RCTPickerManager.m index 4838710940d..401010befbc 100644 --- a/React/Views/RCTPickerManager.m +++ b/React/Views/RCTPickerManager.m @@ -10,6 +10,7 @@ #import "RCTBridge.h" #import "RCTPicker.h" #import "RCTFont.h" +#import @implementation RCTPickerManager @@ -42,4 +43,22 @@ RCT_CUSTOM_VIEW_PROPERTY(fontFamily, NSString, RCTPicker) view.font = [RCTFont updateFont:view.font withFamily:json ?: defaultView.font.familyName]; } +RCT_EXPORT_METHOD(setNativeSelectedIndex : (nonnull NSNumber *)viewTag toIndex : (NSNumber *)index) +{ + [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary *viewRegistry) { + UIView *view = viewRegistry[viewTag]; + + if ([view isKindOfClass:[RCTPicker class]]) { + [(RCTPicker *)view setSelectedIndex:index.integerValue]; + } else { + UIView *subview = view.subviews.firstObject; + if ([subview isKindOfClass:[RCTPicker class]]) { + [(RCTPicker *)subview setSelectedIndex:index.integerValue]; + } else { + RCTLogError(@"view type must be RCTPicker"); + } + } + }]; +} + @end