2016-04-07 3 views
3

Je souhaite afficher une barre de navigation en haut de l'écran en utilisant les codes Navigator et this custom NavigationBar component de React.ReactNative - Pourquoi mon composant NavigationBar personnalisé s'affiche-t-il en bas de l'écran?

J'utilise le code suivant, mais pour une raison quelconque la barre de navigation rend au bas de l'écran:

import NavigationBar from 'react-native-navbar' 

class MyDebts extends Component { 

    constructor(props) { 
    super(props) 
    this.state = { 
     selectedTab: 'persons' 
    } 
    } 

    _renderScene(route, navigator) { 
    console.log('render scene with route: ', route) 
    return <route.component route={route} navigator={navigator} /> 
    } 

    render() { 

    return (
     <Provider store={store}> 
     <TabBarIOS selectedTab={this.state.selectedTab}> 
      <TabBarIOS.Item 
       selected={this.state.selectedTab === 'persons'} 
       title='Persons' 
       onPress={() => { 
        this.setState({ 
         selectedTab: 'persons', 
        }) 
       }}> 
       <Navigator 
       initialRoute={{ name: 'Persons', component: PersonsRootComponent }} 
       renderScene={this._renderScene} 
       navigationBar={<NavigationBar style={styles.nav} title={{title: 'Persons'}}/>} 
       /> 
      </TabBarIOS.Item> 
     </TabBarIOS> 
     </Provider> 
    ) 
    } 
} 

const styles = StyleSheet.create({ 
    nav: { 
    height: 160, 
    backgroundColor: 'red' 
    } 
}) 

Le PersonsRootComponent rend bien, mais je ne sais pas pourquoi on place le NavigationBar sur la bas de l'écran ...

enter image description here

+1

Avez-vous essayé d'exemple https://github.com/react-native-fellowship/react-native-navbar – swiftBoy

+0

je l'ai fait! le problème avec ceux-ci est qu'ils utilisent toujours 'NavigationBar' en tant que composants individuels qui rend dans un composant' View'. mon cas d'utilisation est un peu différent en ce sens que je veux définir le 'NavigationBar' comme un accessoire de' Navigator' – nburk

Répondre

1

Si vous voulez mettre la barre de navigation ailleurs autre que le fond, vous avez besoin d'un positionnement absolu sur la barre de navigation.

container: { width: width, flexDirection: 'row', position:'absolute', top:0, left:0 },

+0

êtes-vous sûr de cela? ne devrait pas la barre de navigation sur le dessus par défaut? il me semble plus que contre-intuitif que vous avez besoin de le dire explicitement pour rendre sur le dessus de l'écran ... – nburk

+0

Je suis sûr du fait que j'ai couru le code et cela fonctionne .... – parker