我有一个抽屉导航器和许多子导航器。 在 Android 上,标题后退箭头和导航栏后退按钮都可以工作并返回到之前的屏幕。 例如,如果我通过抽屉导航到 bScreen1,两个按钮都会让我返回应用程序的主屏幕,即 aScreen1
在 IOS 上,标题后退箭头工作正常,但是,向后滑动可以让我回到 AuthNavigator 内的登录屏幕,而不是 aScreen1,aScreen1 对我来说有 0 sens,因为它位于抽屉导航器之外,并且在 RootNavigator 内处于同一级别。向后滑动不会执行 navigation.goBack()。
我已经尝试通过在“beforeRemove”事件上添加侦听器然后调用 navigation.goBack() 来覆盖滑动行为,但在移动到正确的屏幕(上一个)之前,错误的屏幕仍然会显示一瞬间
...
import { createDrawerNavigator } from '@react-navigation/drawer'
import { createStackNavigator } from '@react-navigation/stack';
const DrawerNavigator = createDrawerNavigator();
const rootStack = createStackNavigator();
...
drawerNavigator() {
return (
<DrawerNavigator.Navigator>
<DrawerNavigator.Screen component={aNavigator} />
<DrawerNavigator.Screen component={bNavigator} />
...
<DrawerNavigator.Screen component={zNavigator} />
</DrawerNavigator.Navigator>
)}
aNavigator() {
return (
<ANavigator.Navigator>
<ANavigator.Screen component={aScreen1} />
...
<ANavigator.Screen component={aScreen10} />
</ANavigator.Navigator>
)}
bNavigator() {
return (
<ANavigator.Navigator>
<ANavigator.Screen component={bScreen1} />
...
<ANavigator.Screen component={bScreen10} />
</ANavigator.Navigator>
)}
<rootStack.Navigator initialRouteName="AuthNavigator" screenOptions={{ headerShown: false }}>
<rootStack.Screen name="AuthNavigator" component={createAuthNavigator} />
<rootStack.Screen name="DrawerNavigator" component={drawerNavigator} />
</rootStack.Navigator>
Ps:我使用的是所有最新版本的导航包
我在设置
animationEnabled: false
时遇到了同样的问题,如果你将其设置为true
,你应该可以滑动来切换屏幕。
我的问题是返回动画在 iOS 上不起作用。将react-native-gesture-handler包从1.6.1更新到1.8.0解决了这个问题