React Native - NavigatorIOS

NavigatorIOS 是包裝了UIKit 庫(kù)的導(dǎo)航功能,使用戶(hù)可以使用左劃功能來(lái)返回到上一界面

NavigatorIOS 屬性

  • barTintColor: 導(dǎo)航欄背景顏色,只設(shè)置當(dāng)前界面的導(dǎo)航欄背景顏色

  • initialRoute() 使用“路由”對(duì)象來(lái)包含要渲染的子視圖美莫、它們的屬性、已經(jīng)導(dǎo)航條配置纸俭“扇ぃ“push”和任何其他的導(dǎo)航函數(shù)的參數(shù)都是這樣的路由對(duì)象(下面實(shí)例模塊會(huì)詳細(xì)講解)

        initialRoute({
            component: function,
            title: string,
            passProps: object,
            backButtonIcon: Image.propTypes.source,//返回按鈕的圖片
            backButtonTitle: string,//返回按鈕的 title
            leftButtonIcon: Image.propTypes.source,// 左按鈕圖片
            leftButtonTitle: string,
            onLeftButtonPress: function,
            rightButtonIcon: Image.propTypes.source,
            rightButtonTitle: string,
            onRightButtonPress: function,
            wrapperStyle: [object Object]//包裹樣式
        })
  • itemWrapperStyle: 導(dǎo)航器中的組件的默認(rèn)屬性和悦。一個(gè)常見(jiàn)的用途是設(shè)置所有頁(yè)面的背景顏色

  • navigationBarHidden: 一個(gè)布爾值仁热,決定導(dǎo)航欄是否隱藏讼撒。

  • shadowHidden:布爾值,決定是否要隱藏1像素的陰影

    1像素的陰影.png

  • tintColor:導(dǎo)航欄上按鈕的顏色

  • titleTextColor:導(dǎo)航器標(biāo)題的文字顏色

  • translucent:布爾值股耽,決定導(dǎo)航條是否半透明(注:當(dāng)不半透明時(shí)頁(yè)面會(huì)向下移動(dòng)導(dǎo)航欄等高的距離,以防止內(nèi)容被遮蓋)

  • interactivePopGestureEnabled:決定是否啟用滑動(dòng)返回手勢(shì)。不指定此屬性時(shí)钳幅,手勢(shì)會(huì)根據(jù) navigationBar 的顯隱情況決定是否啟用(顯示時(shí)啟用手勢(shì)物蝙,隱藏時(shí)禁用手勢(shì)),指定此屬性后敢艰,手勢(shì)與 navigationBar 的顯隱情況無(wú)關(guān)

  • passProps: 父?jìng)鹘o子的對(duì)象 myProp

         passProps: { myProp: 'temp 傳給 computer 的值' },

子類(lèi)調(diào)用:

          alert(this.props.myProp);

NavigatorIOS 方法

  • push(route):導(dǎo)航器跳轉(zhuǎn)到一個(gè)新的路由

  • pop():回到上一頁(yè)

  • popN():回到N頁(yè)之前诬乞。當(dāng) N=1 的時(shí)候,效果和 pop() 一樣,1是最近的一層,想要調(diào)到第 n層 就是N=n+1

  • replace(route):替換當(dāng)前頁(yè)的路由钠导,并立即加載新路由的視圖

  • replacePrevious(route):替換上一頁(yè)的路由/視圖

  • replacePreviousAndPop(route)替換上一頁(yè)的路由/視圖并且立即切換回上一頁(yè)

  • resetTO(route):替換最頂級(jí)的路由并且回到它

  • replaceAtIndex:替換指定路由

  • popToRoute(route):一直回到某個(gè)指定的路由

  • popToTop() 回到最頂層的路由

NavigatorIOS 使用

NavigatorIOS 需要有一個(gè)根視圖來(lái)完成初始化震嫉,所以我們需要先創(chuàng)建一個(gè)組件來(lái)描述這個(gè)界面,并將這個(gè)組件通過(guò)路由的形式告訴 NavigatorIOS牡属,這樣就可以將這個(gè)界面展示出來(lái)

代碼例子:

index.ios.js內(nèi)獲得 Home 組件

import Home from './home';

class RNTalk extends Component {
  render() {
    return (
      <Home />
    );
  }
}

// 整體js模塊的名稱(chēng)
AppRegistry.registerComponent('RNTalk', () => RNTalk);

home.js

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

//導(dǎo)入子頁(yè)面 
import Temp from './temp';

//導(dǎo)航欄 初始化NavigatorIOS 用 Home 作為 NavigatorIOS 的根視圖
class ReactNativeNavigator extends Component{
    render (){
        return(
            <NavigatorIOS 
            style={{flex:1}} // 此項(xiàng)不設(shè)置,創(chuàng)建的導(dǎo)航控制器只能看見(jiàn)導(dǎo)航條而看不到界面
            interactivePopGestureEnabled={true}//決定是否啟用滑動(dòng)返回手勢(shì)票堵。
            itemWrapperStyle='blue'
            translucent={true}//決定導(dǎo)航條是否半透明
            initialRoute={{//初始化路由
                component:Home,//路由的根視圖
                title:'首頁(yè)',//標(biāo)題
                }}/>
        );
    }
}

class Home extends Component{
    //點(diǎn)擊跳轉(zhuǎn)
    _onPressView (nextRoute){
        //跳轉(zhuǎn)  nextRoute 目的地的路由
        this.props.navigator.push(nextRoute);
    }

    render() {
        //目的地的路由屬性
        const nextRoute = {
            component:Temp,//目的地視圖
            title:'詳情頁(yè)碼',//目的地標(biāo)題
            titleTextColor:'red',//標(biāo)題顏色
            shadowHidden:true,//決定是否要隱藏1像素的陰影
            barTintColor:'white',//導(dǎo)航條的背景顏色
            tintColor:'orange',  // 按鈕的顏色
            leftButtonTitle:'返回',//導(dǎo)航條的左按鈕
            onLeftButtonPress:()=>{//導(dǎo)航條左按鈕觸發(fā)事件
                alert('返回');
            },
            rightButtonTitle:'相冊(cè)',//導(dǎo)航條的右按鈕
            onRightButtonPress:()=>{//導(dǎo)航條右按鈕觸發(fā)事件
                alert('沒(méi)有該照片');
            },
            itemWrapperStyle:'green',//沒(méi)有效果 沒(méi)找到原因
            passProps: { myProp: 'bar' }
          };
        return (
            <View style={styles.container}>  
            <TouchableOpacity onPress={() => {this._onPressView(nextRoute)}}>
            <Text style={styles.textContainer}>點(diǎn)擊跳轉(zhuǎn)到 Temp 界面</Text>
            </TouchableOpacity>
        </View>
        );
    }
}
var styles = StyleSheet.create({
    container:{
        // 背景顏色
        backgroundColor:'red',
        flex:1,
        justifyContent:'center',
        alignItems:'center',
    },
    textContainer:{
        fontSize:20,
    }
});

module.exports = ReactNativeNavigator;

temp.js

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

import Computer from './computer';
class Temp extends Component{
    _toComputerView(isShadowHidden){
        this.props.navigator.push({
           component:Computer,
           title:'電腦詳情',
           rightButtonTitle:'配置',
           navigationBarHidden:isShadowHidden,// 隱藏導(dǎo)航欄
           shadowHidden:true,//決定是否要隱藏1像素的陰影
           onRightButtonPress:()=>{
                alert('CUP  i7');
           },
           passProps: { myProp: 'temp 傳給 computer 的值' },
        });
    }
    render(){
        return(
            <View style={styles.container}>
                <TouchableOpacity onPress={() => this._toComputerView(false)}>
                    <Text style={styles.textContainer}>電腦詳情(有導(dǎo)航欄)</Text>
                </TouchableOpacity>
                <Text/>
                <TouchableOpacity onPress={() => this._toComputerView(true)}>
                    <Text style={styles.textContainer}>電腦詳情(無(wú)導(dǎo)航欄)</Text>
                </TouchableOpacity>
                <Text/>
                <TouchableOpacity onPress={() => {this.props.navigator.pop()}}>
                    <Text style={styles.textContainer}>返回上一頁(yè)面</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

var styles = StyleSheet.create({
    container:{
        // 背景顏色
        backgroundColor:'white',
        flex:1,
        justifyContent:'center',
        alignItems:'center',
    },
    textContainer:{
        fontSize:20,
    }
});
//相當(dāng)于將組件 Temp 公開(kāi)出 去將私有的變成共有
module.exports = Temp;

computer.js

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

class Computer extends Component{
    _alertMyProp(){
        alert(this.props.myProp);
    }
    render(){
        return(
            <View style={styles.container}>
                <TouchableOpacity onPress={() => {this.props.navigator.pop()}}>
                <Text style={styles.textContainer}>返回上一頁(yè)面</Text>
                </TouchableOpacity>
                <Text>    </Text>
                <TouchableOpacity onPress={() => {this.props.navigator.popN(2)}}>
                <Text style={styles.textContainer}>返回首頁(yè)</Text>
                </TouchableOpacity>
                <Text>    </Text>
                <TouchableOpacity onPress={() => {this.props.navigator.popToTop()}}>
                <Text style={styles.textContainer}>回到最頂層的路由</Text>
                </TouchableOpacity>
                <Text>    </Text>
                <TouchableOpacity onPress={() => {this._alertMyProp()}}>
                <Text style={styles.textContainer}>展示傳值</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

var styles = StyleSheet.create({
    container: {
        backgroundColor:'yellow',
        flex:1,
        justifyContent:'center',
        alignItems:'center'
    },
    textContainer:{
        fontSize:20,
    }
});
//相當(dāng)于將組件 Temp 公開(kāi)出 去將私有的變成共有
module.exports = Computer;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逮栅,隨后出現(xiàn)的幾起案子悴势,更是在濱河造成了極大的恐慌,老刑警劉巖措伐,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件特纤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡侥加,警方通過(guò)查閱死者的電腦和手機(jī)捧存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人昔穴,你說(shuō)我怎么就攤上這事镰官。” “怎么了傻咖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵朋魔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我卿操,道長(zhǎng)警检,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任害淤,我火速辦了婚禮扇雕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窥摄。我一直安慰自己镶奉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布崭放。 她就那樣靜靜地躺著哨苛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪币砂。 梳的紋絲不亂的頭發(fā)上建峭,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音决摧,去河邊找鬼亿蒸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掌桩,可吹牛的內(nèi)容都是我干的边锁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼波岛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茅坛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起则拷,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灰蛙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后隔躲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體摩梧,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年宣旱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仅父。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笙纤,靈堂內(nèi)的尸體忽然破棺而出耗溜,到底是詐尸還是另有隱情,我是刑警寧澤省容,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布抖拴,位于F島的核電站,受9級(jí)特大地震影響腥椒,放射性物質(zhì)發(fā)生泄漏阿宅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一笼蛛、第九天 我趴在偏房一處隱蔽的房頂上張望洒放。 院中可真熱鬧,春花似錦滨砍、人聲如沸往湿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)领追。三九已至,卻和暖如春响逢,著一層夾襖步出監(jiān)牢的瞬間蔓腐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工龄句, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人散罕。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓分歇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欧漱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子职抡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 前言 學(xué)習(xí)本系列內(nèi)容需要具備一定 HTML 開(kāi)發(fā)基礎(chǔ),沒(méi)有基礎(chǔ)的朋友可以先轉(zhuǎn)至 HTML快速入門(mén)(一) 學(xué)習(xí) 本人...
    珍此良辰閱讀 7,278評(píng)論 33 15
  • 原文鏈接:http://www.cnblogs.com/wujy/p/5849769.html Navigator...
    RunningTeemo閱讀 246評(píng)論 0 0
  • 前言 在前端的開(kāi)發(fā)中,我們需要實(shí)現(xiàn)多個(gè)頁(yè)面的切換跳轉(zhuǎn)窑邦,iOS中使用Navigation實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)擅威,react ...
    Zax_Smile閱讀 1,001評(píng)論 0 6
  • 你久仰過(guò)孤獨(dú)的名字嗎? 你看見(jiàn)過(guò)寂寞留下的背景嗎冈钦? 你聞見(jiàn)過(guò)靈魂散發(fā)的香氣嗎郊丛? 這是一個(gè)流浪者的生命跡象。 在撒哈...
    斷夢(mèng)殘生閱讀 258評(píng)論 2 2
  • 2013年9月4日导盅,我們來(lái)到中北大學(xué)軟件學(xué)院。2017年7月1日揍瑟,我們即將離開(kāi)陪伴我們四年的大學(xué)白翻。再見(jiàn)了,親愛(ài)的老...
    分母為零閱讀 355評(píng)論 0 0