PickerIOS

PickerIOS是只能在iOS上使用的选择组件,对应iOS平台上的UIPickerView。中文网上详细的使用demo http://reactnative.cn/docs/0.26/pickerios.html#content,但如果只是按着demo敲的话发现PickerIOS组件显示不出来。发现demo上没有使用itemStyle这一属性。

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
    PickerIOS
} from 'react-native';

var PickerItemIOS = PickerIOS.Item;

var CAR_MAKES_AND_MODELS = {
  amc: {
    name:'AMC',
    models:['AMX','Concord','Eagle','Gremlin','Matador','Pacer']
  },
  alfa: {
    name:'Alfa-Romeo',
    models:['159','4C','Alfasud','Brera','GTV6','Giulia','MiTo','Spider']
  },
  aston: {
    name:'Aston Martin',
    models:['DB5','DB9','DBS','Rapide','Vanquish','Vantage']
  },
  audi: {
    name:'Audi',
    models:['90','4000','5000','A3','A4','A5','A6','A7','A8','Q5','Q7']
  },
  austin: {
    name:'Austin',
    models:['America','Maestro','Maxi','Mini','Montego','Princess']
  },
  borgward: {
    name:'Borgward',
    models:['Hansa','Isabella','P100']
  },
  buick: {
    name:'Buick',
    models:['Electra','LaCrosse','LeSabre','Park Avenue','Regal','Roadmaster','Skylark']
  },
  cadillac: {
    name:'Cadillac',
    models:['Catera', 'Cimarron', 'Eldorado', 'Fleetwood', 'Sedan de Ville']
  },
  chevrolet: {
    name: 'Chevrolet',
    models: ['Astro', 'Aveo', 'Bel Air', 'Captiva', 'Cavalier', 'Chevelle',
      'Corvair', 'Corvette', 'Cruze', 'Nova', 'SS', 'Vega', 'Volt']
  }
};

class PickerIOSDemo extends Component {

  constructor(props) {
    super(props);
    this.state = {
      carMake:'cadillac',
      modelIndex:3
    }
  }

  render() {
    var make = CAR_MAKES_AND_MODELS[this.state.carMake];
    var selectionString = make.name + ' ' + make.models[this.state.modelIndex];
    return (
      <View style={styles.container}>
       <Text>Please choose a make for your car:</Text>
        <PickerIOS
        //demo上没有设置该属性,导致无法显示
            itemStyle={{width: 200,height: 200}}
            selectedValue={this.state.carMake}
            onValueChange={(carMake) => this.setState({carMake:carMake,modelIndex:0})}>
            {Object.keys(CAR_MAKES_AND_MODELS).map((carMake) =>(
                <PickerItemIOS
                    key={carMake}
                    value={carMake}
                    label={CAR_MAKES_AND_MODELS[carMake].name}
                />
            ))}
        </PickerIOS>
        <Text>Please choose a model of {make.name}</Text>
        <PickerIOS
        //demo上没有设置该属性,导致无法显示
            itemStyle={{width: 200,height: 200}}
            selectedValue={this.state.modelIndex}
            key={this.state.carMake}
            onValueChange={(modelIndex) => this.setState({modelIndex:modelIndex})}>
          {CAR_MAKES_AND_MODELS[this.state.carMake].models.map((modelName,modelIndex) => (
              <PickerItemIOS
                  key={this.state.carMake + '_' + modelIndex}
                  value={modelIndex}
                  label={modelName}
              />
          ))}
        </PickerIOS>
        <Text>You selected: {selectionString}</Text>
      </View>
    );
  }

}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF'
  }
});

AppRegistry.registerComponent('PickerIOSDemo', () => PickerIOSDemo);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值