2016-07-19 9 views
2

У меня есть следующие настройки TabBarIOS.Item:Как я могу заставить TabBarIOS выскочить в верхнюю часть стека навигации, используя native-native?

  <TabBarIOS.Item 
      selected={this.state.selectedTab === 'tab1'} 
      title='Tab 1' 
      icon={require('./Components/Icons/IconImages/Tab1Icon.png')} 
      onPress={() => { 
       this.setState({ 
       selectedTab: 'tab1' 
       }); 

      }}> 
      <MyNavigatorIOS client={this.state.client} initialStep={this.state.initialStep} /> 

      </TabBarIOS.Item> 

Я пытаюсь использовать onPress событие огонь this.props.navigator.popToTop(); как на this example in the react native docs. Разница, однако, в том, что я хочу, чтобы событие TabBarIOS onPress запускало popToTop(), а не дочерний компонент MyNavigatorIOS. Как я могу это сделать?

ответ

2

У меня был тот же вопрос, что вы можете сделать, это добавить реф на ваш взгляд и штурману внутри него, например, так:

  this.refs.timeline.refs.timelineNavigator.popToTop() 

Так код TabBar выглядит следующим образом:

<TabBarIOS.Item 
     systemIcon="history" 
     title="Timeline" 
     badge={this.state.timelineBadge} 
     selected={this.state.selectedTab === 'timeline'} 
     onPress={() => { 
     if (this.state.selectedTab === 'timeline') { 
      this.refs.timeline.refs.timelineNavigator.popToTop() 
     } else { 
      this.setState({ selectedTab: 'timeline' }) 
     } 
     }}> 
     <Timeline 
     ref="timeline" 
     /> 
    </TabBarIOS.Item> 
+0

Похоже, что это сработает! Я решил это решить, используя «EventEmitter» и обработать событие на соответствующих дочерних экранах. Это выглядит приятнее, хотя =) –