Skip to content

Commit

Permalink
fix(iOS): full screen modal crash on paper
Browse files Browse the repository at this point in the history
  • Loading branch information
maksg committed Sep 6, 2024
1 parent d424e1a commit 9e16a3f
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
85 changes: 85 additions & 0 deletions apps/src/tests/Test2317.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator, NativeStackScreenProps } from '@react-navigation/native-stack';
import { DarkTheme, DefaultTheme } from '@react-navigation/native';
import { Button, StyleSheet, Text, useColorScheme } from 'react-native';
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
import { Colors } from 'react-native/Libraries/NewAppScreen';

const Stack = createNativeStackNavigator();

const App = (): React.JSX.Element => {
const isDarkMode = useColorScheme();

return (
<SafeAreaProvider>
<NavigationContainer theme={isDarkMode ? DarkTheme : DefaultTheme}>
<Stack.Navigator>
<Stack.Screen
name="main"
component={MainScreen}
options={{ headerShown: false }}
/>
<Stack.Screen
name="modal"
component={FullScreenModal}
options={({}) => ({
presentation: 'fullScreenModal',
headerTitle: () => (
<Text style={{ color: isDarkMode ? Colors.light : Colors.dark }}>
Header Title
</Text>
)
})}
/>
</Stack.Navigator>
</NavigationContainer>
</SafeAreaProvider>
);
};

const FullScreenModal = ({ navigation }: NativeStackScreenProps<{}>) => {
const isDarkMode = useColorScheme() === 'dark';

return (
<SafeAreaView
style={[
styles.container,
{ backgroundColor: isDarkMode ? Colors.darker : Colors }
]}
>
<Text style={{ color: Colors.light }}>FullScreenModal</Text>
<Button title="Go back" onPress={navigation.goBack} />
</SafeAreaView>
);
};

const MainScreen = ({
navigation
}: NativeStackScreenProps<Record<string, object | undefined>>) => {
const isDarkMode = useColorScheme() === 'dark';

return (
<SafeAreaView
style={[
styles.container,
{ backgroundColor: isDarkMode ? Colors.darker : Colors.lighter }
]}
>
<Text style={{ color: isDarkMode ? Colors.light : Colors.dark }}>
Main Screen
</Text>
<Button title="Press" onPress={() => navigation.navigate('modal')} />
</SafeAreaView>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});

export default App;
1 change: 1 addition & 0 deletions apps/src/tests/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ export { default as Test2235 } from './Test2235';
export { default as Test2252 } from './Test2252';
export { default as Test2271 } from './Test2271';
export { default as Test2282 } from './Test2282';
export { default as Test2317 } from './Test2317';
export { default as TestScreenAnimation } from './TestScreenAnimation';
export { default as TestHeader } from './TestHeader';

3 changes: 3 additions & 0 deletions ios/RNSScreenStackHeaderConfig.mm
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,9 @@ + (void)updateViewController:(UIViewController *)vc
{
UINavigationItem *navitem = vc.navigationItem;
UINavigationController *navctr = (UINavigationController *)vc.parentViewController;
if (navctr == nil) {
return;
}

NSUInteger currentIndex = [navctr.viewControllers indexOfObject:vc];
UINavigationItem *prevItem =
Expand Down

0 comments on commit 9e16a3f

Please sign in to comment.