iOS導航欄標題錯亂的解決方法
一般隱藏和顯示導航欄,只要在基類如下寫就好:
-(BOOL)needHiddenNavigationBar:(UIViewController *)vc{
BOOL isHidden = NO;
if ([NSStringFromClass([vc class]) isEqualToString:@"ViewController"]||
[NSStringFromClass([vc class]) isEqualToString:@"ViewController_1"]) {
isHidden = YES;
}
return isHidden;
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:[self needHiddenNavigationBar:self] animated:animated];
}
但當在一種特殊情況下,就是在第一第二個控制器隱藏導航欄時,當在第二控制器右滑一點點在回來時在第四個控制器會還是會出現導航欄混亂的情況。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"\n%@==%@",NSStringFromClass([self class]),self.navigationController.navigationBar.items);
NSLog(@"\n%@==%@",NSStringFromClass([self class]),self.navigationController.viewControllers);
}```
結果為:
2017-04-23 14:22:15.810 導航欄[2008:53347]
ViewController_3==(
"<<UINavigationItem: 0x6000001cbb80>: title:'ViewController'>",
"<<UINavigationItem: 0x6080001cbe50>: title:'ViewController_1'>",
"<<UINavigationItem: 0x6080001cc030>: title:'ViewController_2'>"
)
2017-04-23 14:22:15.811 導航欄[2008:53347]
ViewController_3==(
"<ViewController: 0x7fc822103a80>",
"<ViewController_1: 0x7fc8206056c0>",
"<ViewController_2: 0x7fc820510040>",
"<ViewController_3: 0x7fc820615db0>"
)```
少一個item 我偶然看到支付寶也出現此現象 他的做法是在新增一個item。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"\n%@==%@",NSStringFromClass([self class]),self.navigationController.navigationBar.items);
NSLog(@"\n%@==%@",NSStringFromClass([self class]),self.navigationController.viewControllers);
if (self.navigationController.navigationBar.topItem != self.navigationItem && ![self needHiddenNavigationBar:self]) {
[self.navigationController setNavigationBarHidden:YES animated:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
}
這樣就可以了,圖
相關文章
- iOS 導航欄的控制iOS
- iOS11縮小介面導航欄與標籤欄異常的問題iOS
- iOS系統導航欄自定義標題動畫跳變解析iOS動畫
- IOS對於導航欄的顯示和隱藏不統一的解決方法iOS
- weex沉浸式導航欄解決方案
- iOS 解決導航欄隱藏,顯示,頁面跳轉閃一下的問題iOS
- iOS系統中導航欄的轉場解決方案與最佳實踐iOS
- 記一次Vue跨導航欄問題解決方案Vue
- iOS 一種新的修改導航欄樣式的方法(支援iOS10).iOS
- ios自定義簡約導航欄iOS
- iOS導航欄佈局相關iOS
- html匯入導航欄本地檔案解決跨域問題HTML跨域
- iOS隱藏導航欄的返回按鈕iOS
- uni-app動態修改頂部導航欄標題APP
- 基於鴻蒙ArkUI封裝標題欄TitleBar導航元件鴻蒙UI封裝元件
- iOS定製UISearchBar導航欄 同步iOS11iOSUI
- iOS隱藏導航欄正確做法iOS
- TOPAS輸出錯亂解決方法
- iOS狀態列和導航欄的設定iOS
- HTML中兩個tabs導航衝突問題的解決方法HTML
- css導航欄之間有空隙怎麼解決CSS
- 欄目總導航—MXCMSSiteNavi標籤說明
- iOS 超Easy實現 漸變導航欄iOS
- iOS逆向之分析微信導航欄實現iOS
- 簡易的iOS導航欄顏色漸變方案iOS
- flutter全屏沉浸式狀態列+標題欄|flutter凸起Tabbar導航FluttertabBar
- MYSQL亂碼問題解決方法MySql
- UIView顯示時遮擋導航欄的方法UIView
- uniapp根據導航欄的標題定位到相應錨點位置APP
- CentOS中文亂碼問題的解決方法CentOS
- CARDS主題 & 導航欄樣式修改
- 解決 ViewPager 巢狀導致的 Fragment 選單錯亂Viewpager巢狀Fragment
- ios 往當前檢視新增半透明層,並覆蓋住導航欄和標籤欄iOS
- iOS 導航欄顏色透明度漸變iOS
- 【Flutter 專題】76 圖解基本 TabBar 標籤導航欄 (二)| 8月更文挑戰Flutter圖解tabBar
- 【Flutter 專題】75 圖解基本 TabBar 標籤導航欄 (一)| 8月更文挑戰Flutter圖解tabBar
- 分析微信(iOS 版)定製導航欄按鈕的思路iOS
- 解決win10左側導航欄出現兩個隨身碟圖示的方法Win10