选择带有选中标记的文本

时间:2019-04-11 14:06:47

标签: ios react-native

我是本机的新手,我正在尝试使用对勾标记进行文本选择,并仅选择一个Text Element,我是否必须使用按钮代替?

like this in the picture

反应代码

<View style={styles.mainContainer}>
  <Text style={styles.title}>User Role</Text>
  <View style={styles.detailsContainer}>
    <View style={styles.rowContainer}>
      <Text style={styles.row}>Admin</Text>
    </View>
    <View style={styles.rowContainer}>
      <Text style={styles.row}>Assistant</Text>
    </View>
  </View>
</View>

样式表

mainContainer: {
    marginTop: 20,
  },
 detailsContainer: {
    backgroundColor: '#FFF',
    marginTop: 10,
  },
title: {
    paddingLeft: 16,
    color: '#979797',
    textTransform: 'uppercase',
  },

2 个答案:

答案 0 :(得分:1)

您需要保留从列表中选择的项目的变量。

 state = {
            selectedId: null
        }


     renderItem({ item }) {
        return (
            <TouchableOpacity
                onPress={() => {
                    this.setState({
                        selectedId: item.id
                    })
                }}>
                <View style={styles.mainContainer} >
                    <Text style={styles.title}>User Role</Text>
                    <View style={styles.detailsContainer}>
                        <View style={styles.rowContainer}>
                            <Text style={styles.row}>Admin</Text>
                        </View>
                        <View style={styles.rowContainer}>
                            <Text style={styles.row}>Assistant</Text>
                        </View>
                    </View>
                    {
                        this.state.selectedId === item.id ? <CHECK_MARK_IMAGE /> : null
                    }
                </View>
            </TouchableOpacity>
        )
    }

我希望您将自己的本机代码放入一种方法中。

答案 1 :(得分:0)

您必须使用react-native中的TouchableOpacityreact-native-elements中的Icon,然后执行此操作。

      <View style={styles.mainContainer}>
        <Text style={styles.title}>User Role</Text>
        <View style={styles.detailsContainer}>
          <TouchableOpacity
            style={styles.rowContainer}
            onPress={() => {
              this.setState({ adminIsChecked: true, assistantIsChecked: false });
            }}
          >
            <View style={{ flexDirection: 'row' }}>
              <Text style={styles.row}>Admin</Text>
              {this.state.adminIsChecked ?
                (<Icon name='check' />)
                :
                (null)
              }
            </View>
          </TouchableOpacity>
          <TouchableOpacity
            style={styles.rowContainer}
            onPress={() => {
              this.setState({ assistantIsChecked: true, adminIsChecked: false });
            }}
          >
            <View style={{ flexDirection: 'row' }}>
              <Text style={styles.row}>Assistant</Text>
              {this.state.assistantIsChecked ?
                (<Icon name='check' />)
                :
                (null)
              }
            </View>
          </TouchableOpacity>
        </View>
      </View>

可触摸项的onPress()被按下时触发触发您定义的功能。

我们将检查一项是否处于选中状态,从而在调用onPress时将其选中,并且显然取消选中另一项。

要使用应用程序的更改状态,请使用this.setState()并获取状态this.state。如果您不了解状态,建议您先here先阅读一下。