From 0e8b9d296d9bad459a92214eb94083dc4c829b96 Mon Sep 17 00:00:00 2001 From: Mark de Vocht Date: Thu, 14 May 2026 10:48:15 +0300 Subject: [PATCH] buttons screen back button fix --- playground/src/screens/ButtonsScreen.tsx | 27 +++++++++++++++--------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/playground/src/screens/ButtonsScreen.tsx b/playground/src/screens/ButtonsScreen.tsx index 38701df80ea..d00d8434dd0 100644 --- a/playground/src/screens/ButtonsScreen.tsx +++ b/playground/src/screens/ButtonsScreen.tsx @@ -1,5 +1,6 @@ /* eslint-disable prettier/prettier */ import React from 'react'; +import { Platform } from 'react-native'; import { NavigationComponent, Options, OptionsTopBarButton } from 'react-native-navigation'; import Root from '../components/Root'; import Button from '../components/Button'; @@ -139,17 +140,23 @@ export default class ButtonOptions extends NavigationComponent { ); } - toggleBack= ()=> { + toggleBack = () => { this.backButtonVisibile = !this.backButtonVisibile; - Navigation.mergeOptions(this.props.componentId,{ - topBar:{ - backButton:{ - testID:BACK_BUTTON, - visible:this.backButtonVisibile - } - } - }) - } + Navigation.mergeOptions(this.props.componentId, { + topBar: { + backButton: { + testID: BACK_BUTTON, + visible: this.backButtonVisibile, + }, + // iOS: leftButtons replace the back chevron slot, so the back button + // can't render unless leftButtons are cleared. Android's back + // affordance is independent of leftButtons. + ...(Platform.OS === 'ios' && this.backButtonVisibile + ? { leftButtons: [] } + : {}), + }, + }); + }; setRightButtons = () => Navigation.mergeOptions(this, {