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 />; }
  }
];
SegmentedControlIOS#values
  • References/JavaScript/React Native/Components: SegmentedControlIOS

values [string] The labels for the control's segment buttons, in order.

2025-01-10 15:47:30
SegmentedControlIOS#onChange
  • References/JavaScript/React Native/Components: SegmentedControlIOS

onChange function Callback that is called when the user taps a segment; passes the event as an argument

2025-01-10 15:47:30
SegmentedControlIOS#selectedIndex
  • References/JavaScript/React Native/Components: SegmentedControlIOS

selectedIndex number The index in props.values of the segment to be (pre)selected.

2025-01-10 15:47:30
SegmentedControlIOS#onValueChange
  • References/JavaScript/React Native/Components: SegmentedControlIOS

onValueChange function Callback that is called when the user taps a segment; passes the segment's value

2025-01-10 15:47:30
SegmentedControlIOS#momentary
  • References/JavaScript/React Native/Components: SegmentedControlIOS

momentary bool If true, then selecting a segment won't persist visually. The onValueChange

2025-01-10 15:47:30
SegmentedControlIOS#enabled
  • References/JavaScript/React Native/Components: SegmentedControlIOS

enabled bool If false the user won't be able to interact with the control. Default value is true.

2025-01-10 15:47:30
SegmentedControlIOS#tintColor
  • References/JavaScript/React Native/Components: SegmentedControlIOS

tintColor string Accent color of the control.

2025-01-10 15:47:30