跨Navigation跳轉(zhuǎn)(類似微信)方案一

下面是方案一,不推薦使用,在我們的項目(項目比結(jié)構(gòu)較復雜)時候一段時間后發(fā)現(xiàn)了一個bug,有時會在tabbar上留一行白色區(qū)域,正好是navgationBar的高度.而且這種做法比較復雜.不過是一種很有意思的思路!

效果

*微信跳轉(zhuǎn),在通訊錄Navi點人聊天

IMG_5075.PNG
IMG_5076.PNG

*聊天界面返回的時候tabbar回到了會話列表“微信”的Navi上,而且左滑返回看到的也是“微信”的Navi

IMG_5079.PNG
IMG_5077.PNG

實現(xiàn)思路

一個OrignNavigationController包裹我們正常的UITabBarController

以往的寫法

MainTabBarController *mainTabBarController = [[MainTabBarController alloc] init];
self.window.rootViewController = mainTabBarController;

我們的寫法

MainTabBarController *mainTabBarController = [[MainTabBarController alloc] init];
StartNavigationController *nav = [[StartNavigationController alloc] initWithRootViewController:mainTabBarController];
self.window.rootViewController = nav;

點人聊天時我們的操作
1.用tabbarController的NavigationController(即StartNavigationController)進行push操作跳轉(zhuǎn)到聊天界面

UINavigationController* nav = ((AppDelegate*)[UIApplication sharedApplication].delegate).mainController.navigationController; // 我們用appdele持有tabbarController
[nav pushViewController:sessionVC animated:YES];

2.上面操作以后的效果看起來確實有跳轉(zhuǎn),但是如果此時點擊聊天界面的返回按鈕(以微信為例)返回到的界面是"通訊里"而不是"微信"的會話列表
3.偷梁換柱-所以我們需要做點操作讓返回的時候回到"微信"
在聊天界面中作如下操作

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    MainTabBarController* mainTabBarController = ((AppDelegate*)[UIApplication sharedApplication].delegate).mainController;
    [mainTabBarController setSelectedIndex:MessageIndex]; // tabbar切換回"微信"Navi
    // 下一步很關(guān)鍵也很難理解,所以重點解釋下
    /*
        1.要明白self.navigationController是StartNavigationController
        2.此時整個app的結(jié)構(gòu)是window包著StartNavigationController,StartNavigationController包著一個棧底控制器MainTabbBarController和一個棧頂控制器聊天Controller
    */
    [self.navigationController setViewControllers:@[mainTabBarController,self]];
    UINavigationController* navigation = mainTabBarController.viewControllers[self.comingFromNavigationController - 1];
    [navigation popToRootViewControllerAnimated:NO]; // 最后記得把"通訊錄"Navi要popToRoot
}

上面的操作主要是對tabbarController的層次界面情況進行調(diào)整

4.最后要注意的
StartNavigationController要自定義寫一個,并且設置

[self.navigationBar setTranslucent:YES];

不然會導致該Navi下的控制器下移44的高度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,662評論 4 61
  • 前言 由于最近兩個多月,筆者正和小伙伴們忙于對公司新項目的開發(fā),筆者主要負責項目整體架構(gòu)的搭建以及功能模塊的分工。...
    CoderMikeHe閱讀 27,390評論 74 270
  • 1. 自我介紹 2. “謝謝”的感悟 還有王沛瑤的爸爸的話 3. 社團 辯論賽
    大Ruan閱讀 135評論 0 0
  • 01 你抱怨生活枯燥乏味,抱怨工作百無聊賴,大概你還沒有發(fā)現(xiàn)自己喜歡的事吧? 喜歡熱鬧,會向往人群聚集的地方;喜歡...
    木木熹閱讀 669評論 5 13
  • 連載了六期的內(nèi)容,簡單澄清一個概念,我在這里所提及的小說創(chuàng)作技巧和規(guī)律,其實主要是針對商業(yè)小說的探討,以個人表達為...
    魏童閱讀 2,043評論 7 63

友情鏈接更多精彩內(nèi)容