Use SegmentedControlIOS
to render a UISegmentedControl iOS.
Programmatically changing selected index
The selected index can be changed on the fly by assigning the selectIndex prop to a state variable, then changing that variable. Note that the state variable would need to be updated as the user selects a value and changes the index, as shown in the example below.
1 2 3 4 5 6 7 | <SegmentedControlIOS values={[ 'One' , 'Two' ]} selectedIndex={ this .state.selectedIndex} onChange={(event) => { this .setState({selectedIndex: event.nativeEvent.selectedSegmentIndex}); }} /> |
Props
View props...
enabled bool
If false the user won't be able to interact with the control. Default value is true.
momentary bool
If true, then selecting a segment won't persist visually. The onValueChange
callback will still work as expected.
onChange function
Callback that is called when the user taps a segment; passes the event as an argument
onValueChange function
Callback that is called when the user taps a segment; passes the segment's value as an argument
selectedIndex number
The index in props.values
of the segment to be (pre)selected.
tintColor string
Accent color of the control.
values [string]
The labels for the control's segment buttons, in order.
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | 'use strict' ; var React = require( 'react' ); var ReactNative = require( 'react-native' ); var { SegmentedControlIOS, Text, View, StyleSheet } = ReactNative; var BasicSegmentedControlExample = React.createClass({ render() { return ( <View> <View style={{marginBottom: 10}}> <SegmentedControlIOS values={[ 'One' , 'Two' ]} /> </View> <View> <SegmentedControlIOS values={[ 'One' , 'Two' , 'Three' , 'Four' , 'Five' ]} /> </View> </View> ); } }); var PreSelectedSegmentedControlExample = React.createClass({ render() { return ( <View> <View> <SegmentedControlIOS values={[ 'One' , 'Two' ]} selectedIndex={0} /> </View> </View> ); } }); var MomentarySegmentedControlExample = React.createClass({ render() { return ( <View> <View> <SegmentedControlIOS values={[ 'One' , 'Two' ]} momentary={ true } /> </View> </View> ); } }); var DisabledSegmentedControlExample = React.createClass({ render() { return ( <View> <View> <SegmentedControlIOS enabled={ false } values={[ 'One' , 'Two' ]} selectedIndex={1} /> </View> </View> ); }, }); var ColorSegmentedControlExample = React.createClass({ render() { return ( <View> <View style={{marginBottom: 10}}> <SegmentedControlIOS tintColor= "#ff0000" values={[ 'One' , 'Two' , 'Three' , 'Four' ]} selectedIndex={0} /> </View> <View> <SegmentedControlIOS tintColor= "#00ff00" values={[ 'One' , 'Two' , 'Three' ]} selectedIndex={1} /> </View> </View> ); }, }); var EventSegmentedControlExample = React.createClass({ getInitialState() { return { values: [ 'One' , 'Two' , 'Three' ], value: 'Not selected' , selectedIndex: undefined }; }, render() { return ( <View> <Text style={styles.text} > Value: { this .state.value} </Text> <Text style={styles.text} > Index: { this .state.selectedIndex} </Text> <SegmentedControlIOS values={ this .state.values} selectedIndex={ this .state.selectedIndex} onChange={ this ._onChange} onValueChange={ this ._onValueChange} /> </View> ); }, _onChange(event) { this .setState({ selectedIndex: event.nativeEvent.selectedSegmentIndex, }); }, _onValueChange(value) { this .setState({ value: value, }); } }); var styles = StyleSheet.create({ text: { fontSize: 14, textAlign: 'center' , fontWeight: '500' , margin: 10, }, }); exports.title = '<SegmentedControlIOS>' ; exports.displayName = 'SegmentedControlExample' ; exports.description = 'Native segmented control' ; exports.examples = [ { title: 'Segmented controls can have values' , render(): ReactElement<any> { return <BasicSegmentedControlExample />; } }, { title: 'Segmented controls can have a pre-selected value' , render(): ReactElement<any> { return <PreSelectedSegmentedControlExample />; } }, { title: 'Segmented controls can be momentary' , render(): ReactElement<any> { return <MomentarySegmentedControlExample />; } }, { title: 'Segmented controls can be disabled' , render(): ReactElement<any> { return <DisabledSegmentedControlExample />; } }, { title: 'Custom colors can be provided' , render(): ReactElement<any> { return <ColorSegmentedControlExample />; } }, { title: 'Change events can be detected' , render(): ReactElement<any> { return <EventSegmentedControlExample />; } } ]; |