Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion FabricExample/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2075,7 +2075,7 @@ SPEC CHECKSUMS:
ReactCommon: bd1703fa1b6b6ccb2494bed17caf93f1861ce315
RNGestureHandler: 70069ab3e0431b03f6e465b65745f87a1a02c6c0
RNReanimated: bc7be90dec8df273a2d14da13a64f9da4b694e59
RNScreens: e33d663f09210e3b2ad85969fd71d6b35c05231b
RNScreens: 0b7e33010584f5cbcbcdd9238810a0e7ef9b858d
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
Yoga: 76eca883712bbdd12fcc754f2342f3ca307adb44

Expand Down
32 changes: 12 additions & 20 deletions ios/RNSScreenStackHeaderConfig.mm
Original file line number Diff line number Diff line change
Expand Up @@ -678,20 +678,19 @@ - (void)configureBackItem:(nullable UINavigationItem *)prevItem API_UNAVAILABLE(

const auto isBackTitleBlank = [NSString rnscreens_isBlankOrNull:config.backTitle] == YES;
NSString *resolvedBackTitle = isBackTitleBlank ? prevItem.title : config.backTitle;
RNSUIBarButtonItem *backBarButtonItem = [[RNSUIBarButtonItem alloc] initWithTitle:resolvedBackTitle
style:UIBarButtonItemStylePlain
target:nil
action:nil];
[backBarButtonItem setMenuHidden:config.disableBackButtonMenu];

auto shouldUseCustomBackBarButtonItem = config.disableBackButtonMenu;

prevItem.backButtonTitle = resolvedBackTitle;
// This has any effect only in case the `backBarButtonItem` is not set.
// We apply it before we configure the back item, because it might get overriden.
prevItem.backButtonDisplayMode = config.backButtonDisplayMode;
prevItem.backButtonTitle = resolvedBackTitle;

if (config.isBackTitleVisible) {
auto shouldUseCustomBackBarButtonItem = config.disableBackButtonMenu;
RNSUIBarButtonItem *backBarButtonItem = [[RNSUIBarButtonItem alloc] initWithTitle:resolvedBackTitle
style:UIBarButtonItemStylePlain
target:nil
action:nil];
[backBarButtonItem setMenuHidden:config.disableBackButtonMenu];

if ((config.backTitleFontFamily &&
// While being used by react-navigation, the `backTitleFontFamily` will
// be set to "System" by default - which is the system default font.
Expand All @@ -715,19 +714,12 @@ - (void)configureBackItem:(nullable UINavigationItem *)prevItem API_UNAVAILABLE(
}
[RNSScreenStackHeaderConfig setTitleAttibutes:attrs forButton:backBarButtonItem];
}

if (shouldUseCustomBackBarButtonItem) {
prevItem.backBarButtonItem = backBarButtonItem;
}
} else {
// back button title should be not visible next to back button,
// but it should still appear in back menu
prevItem.backButtonDisplayMode = UINavigationItemBackButtonDisplayModeMinimal;
shouldUseCustomBackBarButtonItem = NO;
}

// Prevent unnecessary assignment of backBarButtonItem if it is not customized,
// as assigning one will override the native behavior of automatically shortening
// the title to "Back" or hide the back title if there's not enough space.
// See: https://github.com/software-mansion/react-native-screens/issues/1589
if (shouldUseCustomBackBarButtonItem) {
prevItem.backBarButtonItem = backBarButtonItem;
}
#endif
}
Expand Down
Loading