iOS 14中長按返回按鈕會(huì)顯示多級(jí)菜單,滑動(dòng)后可以返回對(duì)應(yīng)的頁面。
navigation stack.gif
在App上長按后title為空
空白.png
backButtonDisplayMode
iOS 14新增了一個(gè)屬性backButtonDisplayMode來定義title的來源
typedef NS_ENUM(NSInteger, UINavigationItemBackButtonDisplayMode) {
/// Default mode, uses an appropriate title, followed by a generic title (typically 'Back'), then no title.
UINavigationItemBackButtonDisplayModeDefault = 0,
/// Generic titles only. Ignores .title and .backButtonTitle (but *not* .backBarButtonItem.title).
UINavigationItemBackButtonDisplayModeGeneric = 1,
/// Don't use a title, just the back button indicator image.
UINavigationItemBackButtonDisplayModeMinimal = 2,
} NS_SWIFT_NAME(UINavigationItem.BackButtonDisplayMode);
title來源的優(yōu)先級(jí)
1.navigationItem.backBarButtonItem
2.navigationItem.backButtonTitle
3.navigationItem.title和viewController的title,同時(shí)設(shè)置顯示為viewController的title
App中使用
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = item;
來隱藏返回按鈕的標(biāo)題,引起了上面的問題。
UINavigationItemBackButtonDisplayModeMinimal
Minimal模式下,返回按鈕不顯示title,但是 navigation stack可以顯示出 title,未設(shè)置title的時(shí)候顯示返回。
適配
if (@available(iOS 14.0, *)) {
self.navigationItem.backButtonDisplayMode = UINavigationItemBackButtonDisplayModeMinimal;
} else {
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = item;
}
適配.png