iOS實現先無動畫pop再push,替換當前控制器

iOS實現先無動畫pop再push,替換當前控制器

1.先pop 發送通知或代理在前一個頁面執行push操作

iOS開發中會遇到添加成功,發送成功……類似情況,需要先將push前的頁面移除調。如果直接調用pop,立刻去push。如果這兩個命令寫在同一個控制器中,則會發現push根本沒有被執行……因為pop已經將該控制器移除,push根本沒有機會執行。也可以在上一個控制器通過代理/通知/閉包等操作。

這種方法有弊端,有可能會push多次不等。頁面交互非常不好。

2.改變控制器在棧中的位置
所以就選擇了下面的方法,先移除路由棧中當前控制器,再新增新的控制器,最后賦值。

  // 新建將要push的控制器
        MyGroupDetailViewController *detail = [[MyGroupDetailViewController alloc]init];
        detail.groupId = groupId;
        // 獲取當前路由的控制器數組
        NSMutableArray *vcArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
        // 打印當前路由的控制器數組
        NSLog(@"1==the vcArray is %@", vcArray);
        // 獲取檔期控制器在路由的位置
        int index = (int)[vcArray indexOfObject:self];
        // 移除當前路由器
        [vcArray removeObjectAtIndex:index];
        NSLog(@"2==the vcArray is %@", vcArray);
        // 添加新控制器
        [vcArray addObject: detail];
        // 打印新增后的控制器數組
        NSLog(@"3==the vcArray is %@", vcArray);
        // 重新設置當前導航控制器的路由數組
        [self.navigationController setViewControllers:vcArray animated:YES];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,255評論 4 61
  • 說起來你的名字,爸爸媽媽起得還是很隨意的。那天你媽挺著肚子躺在床上,她連扭個腰,轉個身拿起旁邊的水杯都懶得動,我把...
    壓力很大的六爺閱讀 698評論 0 2
  • 相識總是剎那間 一日響午,潘陽湖上突的熱鬧起來。原來這一天是五月初五,只看滿湖龍舟,黃發垂笤,市井之人皆于湖上...
    醉里不知年華閱讀 291評論 4 1
  • 那次去旅游的時候, 忘了帶一件自己喜歡的睡衣, 或者叫內衣。
    許蜜蜜閱讀 137評論 0 0
  • 青春遇見羅馬假日 微笑見證著 幸福時光 生活有陽光 也會有風雨 生活的不平靜 在魂斷藍橋里 飄過相思的淚滴 走在風...
    郭相麟閱讀 300評論 0 0