美文网首页
React Native(iOS)新手小白零基础自学(三)Nav

React Native(iOS)新手小白零基础自学(三)Nav

作者: 神魔狼 | 来源:发表于2016-05-05 10:01 被阅读456次

    NavigatorIOS 顾名思义和OC的UINavigationController一样,这是React对原生导航栏的包装,当然React自身也有类似的控件Navigator,后面会讲到。这里先简单介绍一下NavigatorIOS的一些基本属性:

            1.初始化路由
              initialRoute={{
                component: function, //加载的视图组件
                title: string,  //当前视图的标题
                passProps: object, //传递的数据
                backButtonIcon: Imaget.propTypes.source, //后退按钮图标
                backButtonTitle: string, //后退按钮标题
                leftButtonIcon: Image.propTypes.source, //左边按钮图标
                leftButtonTitle: string,  //左边按钮的标题
                onLeftButtonPress: function,  //左边按钮点击事件
                rightButtonIcon: Image.propTypes.source, //右边按钮图标
                rightButtonTitle: string,  //右边按钮的标题
                onRightButtonPress: function,  //右边按钮点击事件
                wrapperStyle: [object Object] //包裹样式
              }}
            2.barTintColor 导航条的背景颜色  
            3.itemWrapperStyle 为每一项定制样式,例如设置每个页面的背景颜色
            4.navigationBarHidden 当其值为true时,隐藏导航栏
            5.shadowHidden 是否隐藏阴影,值为true或false
            6.tintColor 导航栏上按钮的颜色
            7.titleTextColor 导航栏上字体的颜色
            8.translucent 导航栏是否是半透明的,其值true或false
    

    在组件视图切换时,navigator会作为一个属性对象被传递。我们可以通过this.prop.navigator来获得navigator对象。这个很重要,navigator的主要方法如下:

        push(route) 加载一个新的页面(视图或者是路由),并且路由到该页面
        pop() 返回到上一页面
        popN(n) 一次性返回N个页面,当N=1时,即相当于pop()
        replace(route) 替换当前路由
        replacePrevious(route) 替换前一个页面的视图并回退过去
        resetTo(route) 取代最顶层的路由并且回退过去
        popToTop() 回到最上层视图
    

    基本上这些属性还是比较好理解的,有不明白的等下在示例中再慢慢体会。例子是从列表页跳到详情页,如下图所示:

    屏幕快照 2016-05-05 上午9.55.37.png 屏幕快照 2016-05-05 上午9.55.56.png

    为了实现这个功能,需要三个组件:APP入口组件、 列表页组件、 详情页组件

    1.入口组件
    首先加载NavigatorIOS组件,并将其作为路由跳转的入口.

    /*
      component:List 这里为NavigatorIOS组件配置了一个初始化路由List,
                     这样页面启动时就会加载List组件
    */
    var NV = React.createClass({
      render: function(){
        return (
          <NavigatorIOS
            style = {{flex:1}}
            initialRoute={{
              component:List,
              title: '邮轮',
              passProps: {},
            }}
          />
        );
      }
    });
    

    2.列表页组件

    var List = React.createClass({
    
      render: function (){
        return (
          <ScrollView style={styles.flex}>
            <Text style={styles.listItem} onPress={this.goTo}>✨豪华邮轮济州岛3日游</Text>
            <Text style={styles.listItem} onPress={this.goTo} >✨豪华邮轮台湾3日游</Text>
            <Text style={styles.listItem} onPress={this.goTo}>✨豪华邮轮地中海8日游</Text>
          </ScrollView>
        );
      },
    
      goTo: function(){
        this.props.navigator.push({
          component:Detail,
          title:'邮轮详情',
          rightButtonTitle:'购物车',
          onRightButtonPress: function() {
            alert('进入我的购物车');
          }
        });
      }
    
    });
    

    3.详情页

    var Detail = React.createClass({
      render: function() {
        return (
          <ScrollView>
            <Text>详情页</Text>
            <Text>尽管信息很少,但这就是详情页</Text>
          </ScrollView>
        );
      }
    });
    

    相关文章

      网友评论

          本文标题:React Native(iOS)新手小白零基础自学(三)Nav

          本文链接:https://www.haomeiwen.com/subject/loohrttx.html