我目前使用React Navigation有一个嵌套的导航堆栈:
const HomeStack = createStackNavigator({
Home: {
screen: HomeScreen,
},
Detail: {
screen: DetailScreen,
navigationOptions: {
header: null,
},
}
})
const MainStack = createMaterialTopTabNavigator({
Home: {
screen: HomeStack ,
},
Profile: {
screen: ProfileScreen,
},
}, {
tabBarPosition: null,
}
)
第一层是使用MainStack
的createMaterialTopTabNavigator
,如上所述。在第二层上,当我从HomeScreen
导航到DetailScreen
时,我希望从该屏幕导航的唯一方法是向右滑动即可返回HomeScreen
。
但是,我现在能够从DetailScreen
向左滑动,并直接导航到第一层的ProfileScreen
,就好像我要从HomeScreen
走一样。我猜想这是createMaterialTopTabNavigator
的功能或错误,但是我需要使用createMaterialTopTabNavigator
,这样我才能通过滑动而无需从导航标签上按一下,从而从一个屏幕导航到另一个屏幕react-native-viewpager,但在非堆叠屏幕之间。
更具体地说,我希望其行为如下:
HomeScreen
-> DetailScreen
-(向右滑动)-> HomeScreen
-> ProfileScreen
但是,目前可能进行以下操作:
HomeScreen
-> DetailScreen
-(向左滑动)-> ProfileScreen
是否有一种方法可以将导航从导航堆栈第二层的DetailScreen
直接阻止到导航堆栈第一层的ProfileScreen
?否则,是否有一种方法可以使用与createMaterialTopTabNavigator
不同的导航器导航到同一级别上的不同非堆叠屏幕?
尝试一下
const HomeStack = createStackNavigator({
Home: {
screen: HomeScreen,
},
Detail: {
screen: DetailScreen,
navigationOptions: {
header: null,
gestureEnabled: false, //added this one
},
}
})