新聞中心
iOS 導(dǎo)航器包裝了 UIKit 導(dǎo)航,并且允許你添加跨應(yīng)用程序的 back-swipe 功能。

路線
路線是用于描述導(dǎo)航器每個頁面的一個對象。第一個提供給 NavigatorIOS 的路線是 initialRoute:
render: function() { return (
);
},現(xiàn)在將由導(dǎo)航器呈現(xiàn) MyView。它將在 route 道具,導(dǎo)航器及所有的 passProps 指定的道具中接受一個路線對象。
路線完整的定義請看 initialRoute propType。
導(dǎo)航器
Navigator 是視圖能夠調(diào)用的導(dǎo)航函數(shù)的一個對象。它作為一個道具會被傳遞給任何由 NavigatorIOS 呈現(xiàn)的組件。
var MyView = React.createClass({
_handleBackButtonPress: function() { this.props.navigator.pop();
},
_handleNextButtonPress: function() { this.props.navigator.push(nextRoute);
},
...
});一個導(dǎo)航對象包含以下功能:
push(route)——導(dǎo)航到一個新的路線pop()——返回一個頁面popN(n)——一次返回 N 頁。當 N=1 時,該行為相當于pop()replace(route)——取代當前頁面的路線,并立即為新路線加載視圖replacePrevious(route)——取代前一頁的路線/視圖replacePreviousAndPop(route)——取代了以前的路線/視圖并轉(zhuǎn)換回去resetTo(route)——取代頂級的項目并 popToToppopToRoute(route)——為特定的路線對象回到項目popToTop()——回到頂級項目
導(dǎo)航功能在 NavigatorIOS 組件中也是可用的:
var MyView = React.createClass({ _handleNavigationRequest: function() { this.refs.nav.push(otherRoute);
}, render: () => (
),
});Props
Edit on GitHub
initialRoute {組件:函數(shù)型,標題:字符串型,passProps:對象型,backButtonTitle:字符串型,rightButtonTitle:字符串型,onRightButtonPress:函數(shù)型,wrapperStyle:[對象型Object]}
NavigatorIOS 使用“路線”對象來識別子視圖,道具,及導(dǎo)航欄的配置?!皃ush”和所有其他的導(dǎo)航操作預(yù)計路線是這樣的:
itemWrapperStyle View#style
默認的包為 navigator 中的組件設(shè)置樣式。一個常見的用例是為每一頁設(shè)置 backgroundColor
tintColor 字符串型
在導(dǎo)航欄中的按鈕使用的顏色
例子
Edit on GitHub
'use strict';var React = require('react-native');var ViewExample = require('./ViewExample');var createExamplePage = require('./createExamplePage');var {
PixelRatio,
ScrollView,
StyleSheet,
Text,
TouchableHighlight,
View,
} = React;var EmptyPage = React.createClass({ render: function() { return (
{this.props.text}
);
},
});var NavigatorIOSExample = React.createClass({ statics: { title: '', description: 'iOS navigation capabilities',
}, render: function() { var recurseTitle = 'Recurse Navigation'; if (!this.props.topExampleRoute) {
recurseTitle += ' - more examples here';
} return (
See <UIExplorerApp> for top-level usage.
{this._renderRow(recurseTitle, () => { this.props.navigator.push({ title: NavigatorIOSExample.title, component: NavigatorIOSExample, backButtonTitle: 'Custom Back', passProps: {topExampleRoute: this.props.topExampleRoute || this.props.route},
});
})}
{this._renderRow('Push View Example', () => { this.props.navigator.push({ title: 'Very Long Custom View Example Title', component: createExamplePage(null, ViewExample),
});
})}
{this._renderRow('Custom Right Button', () => { this.props.navigator.push({ title: NavigatorIOSExample.title, component: EmptyPage, rightButtonTitle: 'Cancel', onRightButtonPress: () => this.props.navigator.pop(), passProps: { text: 'This page has a right button in the nav bar',
}
});
})}
{this._renderRow('Pop', () => { this.props.navigator.pop();
})}
{this._renderRow('Pop to top', () => { this.props.navigator.popToTop();
})}
{this._renderRow('Replace here', () => { var prevRoute = this.props.route; this.props.navigator.replace({ title: 'New Navigation', component: EmptyPage, rightButtonTitle: 'Undo', onRightButtonPress: () => this.props.navigator.replace(prevRoute), passProps: { text: 'The component is replaced, but there is currently no ' + 'way to change the right button or title of the current route',
}
});
})}
{this._renderReplacePrevious()}
{this._renderReplacePreviousAndPop()}
{this._renderPopToTopNavExample()}
);
}, _renderPopToTopNavExample: function() { if (!this.props.topExampleRoute) { return null;
} return this._renderRow('Pop to top NavigatorIOSExample', () => { this.props.navigator.popToRoute(this.props.topExampleRoute);
});
}, _renderReplacePrevious: function() { if (!this.props.topExampleRoute) { // this is to avoid replacing the UIExplorerList at the top of the stack return null;
} return this._renderRow('Replace previous', () => { this.props.navigator.replacePrevious({ title: 'Replaced', component: EmptyPage, passProps: { text: 'This is a replaced "previous" page',
}, wrapperStyle: styles.customWrapperStyle,
});
});
}, _renderReplacePreviousAndPop: function() { if (!this.props.topExampleRoute) { // this is to avoid replacing the UIExplorerList at the top of the stack return null;
} return this._renderRow('Replace previous and pop', () => { this.props.navigator.replacePreviousAndPop({ title: 'Replaced and Popped', component: EmptyPage, passProps: { text: 'This is a replaced "previous" page',
}, wrapperStyle: styles.customWrapperStyle,
});
});
}, _renderRow: function(title: string, onPress: Function) { return (
{title}
);
},
});var styles = StyleSheet.create({ customWrapperStyle: { backgroundColor: '#bbdddd',
}, emptyPage: { flex: 1, paddingTop: 64,
}, emptyPageText: { margin: 10,
}, list: { backgroundColor: '#eeeeee', marginTop: 10,
}, group: { backgroundColor: 'white',
}, groupSpace: { height: 15,
}, line: { backgroundColor: '#bbbbbb', height: 1 / PixelRatio.get(),
}, row: { backgroundColor: 'white', justifyContent: 'center', paddingHorizontal: 15, paddingVertical: 15,
}, separator: { height: 1 / PixelRatio.get(), backgroundColor: '#bbbbbb', marginLeft: 15,
}, rowNote: { fontSize: 17,
}, rowText: { fontSize: 17, fontWeight: '500',
},
});module.exports = NavigatorIOSExample; 標題名稱:創(chuàng)新互聯(lián)React教程:iOS 導(dǎo)航器
本文鏈接:http://fisionsoft.com.cn/article/copjpod.html


咨詢
建站咨詢
