'use strict';
var React = require('react-native');
var {
Component,
StyleSheet,
Text,
View,
TabBarIOS
} = React;
var style = StyleSheet.create({
rootView: {
flex: 1
}
});
class MainTabBar extends Component {
constructor(props) {
super(props);
this.tabBarData = [];
this.state = {
selectedTab: 0
};
}
componentWillMount() {
this.configureTabBar();
}
configureTabBar() {
var defaultTabIndex = 1;
React.Children.map(this.props.initialConfig, function(eachChild, index) {
var eachTabBarData = {
id: index,
title: eachChild.props.title,
icon: eachChild.props.icon,
component: eachChild.props.children
};
this.tabBarData.push(eachTabBarData);
if (eachChild.props.defaultTab) {
defaultTabIndex = index;
}
}.bind(this));
this.setState({
selectedTab: defaultTabIndex
});
this.props.navComponent.currentTabIndex = defaultTabIndex;
this.props.navComponent.setState({
rootNavigatorTitle: this.tabBarData[defaultTabIndex].title
});
}
switchTab(tabId, tabTitle, currentTabIndex) {
this.props.navComponent.currentTabIndex = currentTabIndex;
this.props.navComponent.setState({
currentTabIndex: currentTabIndex,
rootNavigatorTitle: tabTitle
});
this.props.navComponent.forceUpdate();
this.setState({
selectedTab: tabId
});
}
renderTabBarItems() {
var items = [];
var self = this;
for (var i = 0; i < this.tabBarData.length; i++) {
var eachData = this.tabBarData[i];
var eachComponent = React.cloneElement(eachData.component, {
navigator: this.props.navigator,
navComponent: this.props.navComponent
});
items.push(
{eachComponent}
);
}
return items;
}
render() {
return (
{this.renderTabBarItems()}
);
}
}
module.exports = MainTabBar;