我正在尝试使用this 库来显示自定义模式对话框。我有一个带有三个屏幕的StackNavigator,其中MainScreen是一个TabNavigator,我在其上设置了以下标题:
static navigationOptions = ({navigation}) => {
const { params } = navigation.state
return {
headerRight: (
<Content>
<Grid>
<Col style={styles.headerButton}>
<TouchableHighlight style={styles.infoButton} onPress={() => {params._onAbout()}} underlayColor='lightgrey'>
<Icon ios='ios-information-circle' android='md-information-circle' style={{fontSize: 24}} />
</TouchableHighlight>
</Col>
<Col style={styles.headerButton}>
<TouchableHighlight style={styles.logoutButton} onPress={() => {params._onLogout()}} underlayColor='lightgrey'>
<Icon ios='ios-exit-outline' android='md-exit' style={{fontSize: 24}} />
</TouchableHighlight>
</Col>
</Grid>
</Content>
)
}
}
第二个按钮打开一个简单的警报(来自react-native)。使用第一个按钮,我将打开一个自定义模式来显示应用程序和开发人员的详细信息。
主屏幕具有以下渲染方法;
render(): JSX.Element {
return (
<TabContent />
)
}
其中TabContent只是我的标签配置:
const TabContent: NavigationContainer = TabNavigator({
Courses: {
screen: CoursesScreen,
navigationOptions: ({ navigation }) => ({
// title: `${navigation.state.params.user}'s Courses`,
tabBarLabel: 'Corsi',
tabBarIcon: ({ tintColor, focused }) => (
<Icon ios={focused ? 'ios-calendar' : 'ios-calendar-outline'} android='md-calendar' style={{fontSize: 18, color: tintColor}} />
)
})
},
Profile: {
screen: ProfileScreen,
navigationOptions: ({ navigation }) => ({
// title: `${navigation.state.params.user}'s Profile`,
tabBarLabel: 'Profilo',
tabBarIcon: ({ focused, tintColor }) => (
<Icon ios={focused ? 'ios-person' : 'ios-person-outline'} android='md-person' style={{fontSize: 18, color: tintColor}} />
)
})
}
}, {
tabBarOptions: {
activeTintColor: '#F3E03B',
showIcon: true,
labelStyle: {
fontWeight: 'bold'
},
style: {
backgroundColor: 'black'
}
}
})
上面链接的库需要这样的布局:
<View style={styles.wrapper}>
<Modal style={[styles.modal, styles.modal3]} position={"center"} ref={"modal3"} isDisabled={this.state.isDisabled}>
<Text style={styles.text}>Modal centered</Text>
<Button onPress={() => this.setState({isDisabled: !this.state.isDisabled})} style={styles.btn}>Disable ({this.state.isDisabled ? "true" : "false"})</Button>
</Modal>
</View>
但如果我在该视图中放置TabContent
标签,那么标签导航器就不再有用了。
有没有办法让我的TabNavigator和Modal从这个库一起工作?
答案 0 :(得分:2)
我找到了解决方案。
使用Container
作为根组件允许将TabContent
嵌套到其他组件之外:
render(): JSX.Element {
return (
<Container>
<Spinner visible={this.props.isLoggingOut} textContent={'Disconnessione in corso...'} textStyle={{color: '#FFF'}} />
<TabContent screenProps={{ isAdmin: this.props.isAdmin }} />
<Modal style={styles.aboutModal} position={'center'} ref={'aboutModal'} isDisabled={false}>
<Text>Modal centered</Text>
</Modal>
</Container>
)
}