iOS如何隨意的穿插跳躍驶冒,push來pop去苟翻?

iOS如何隨意的穿插跳躍,push來pop去骗污?

主題思想:如A袜瞬、B、C身堡、D 四個視圖控制器邓尤。

想要在 A push B 后, B 在push 到 D 贴谎,然后從 D pop 到 C ,在從 C pop 的A

解決方法如下:

1.假如此時在 A 控制器下汞扎,想要到 push 到 B, 可以這樣寫

[self.navigationController pushViewController: B :YES];

這時

self.navigationController.viewControllers

中按順序含有 [A擅这,B]

2.此時已經(jīng)到 B 控制器下了澈魄, 接下來是 push 到 D, 可以這樣寫

[self.navigationController pushViewController: D :YES];

這時self.navigationController.viewControllers中按順序含有 [A,B仲翎,D]痹扇,接下來很重要,如何想從 D pop 到 C, 看數(shù)組[A溯香,B鲫构,D] 中壓根就沒有C 該如何pop 到C呢?

這時就需要對這個數(shù)組進行修改玫坛,將C 加入進去

于是 你會如下寫:

[self.navigationController.viewControllers addObject:C];

發(fā)現(xiàn)報錯结笨,這是因為 self.navigationController.viewControllers 是不可變數(shù)組,沒辦法了,我們只好轉(zhuǎn)換一下了:

NSMutableArray*tempMarr =[NSMutableArrayarrayWithArray:self.navigationController.viewControllers];

此時再加入C 就容易多了炕吸,咦伐憾,聰明的你會發(fā)現(xiàn)從 D pop C 不能直接將 C直接 addObject;

當(dāng)然,我會這樣做:

[tempMarr insertObject:C atIndex:tempMarr.count- 2];

這時候 tempMarr 是這樣的 [A赫模,B树肃,C,D]瀑罗,可是 要想 從 C pop 到 A 扫外,數(shù)組中就不能有 B

就需要 將 tempMarr 變成 [A,C廓脆,D] 筛谚,至于怎么變,你比我懂得多停忿,

懂得思考的同學(xué)會發(fā)現(xiàn) 這時的 self.navigationController.viewControllers 依然是 [A驾讲,B,D]席赂, 不用急吮铭,不用怕 navigationController 有這樣一個方法, 可以搞定,如下:

[self.navigationController setViewControllers:tempMarr animated:YES];

有的同學(xué)會說颅停,這不是直接把 B 替換 成 C 嗎谓晌?

看上去是這樣,可是跳轉(zhuǎn)的時機癞揉,時機纸肉,時機重要的事情說三遍,還有視圖的切換喊熟,切換柏肪,切換。芥牌。烦味。

此時還在 B 控制器中,這些處理過程都是在 B 中處理的 壁拉, 也必須是 B 執(zhí)行了 push 到 D 方法后谬俄,也就是說

[self.navigationController pushViewController:D animated:YES];

之后 進行的 數(shù)組處理;

附加代碼:

在B 控制器中處理:

-(void)pushTest {

[self.navigationController pushViewController:D animated:YES];

NSMutableArray*tempMarr = [NSMutableArrayarrayWithArray : self.navigationController.viewControllers];

[tempMarr insertObject:C atIndex:tempMarr.count- 2];

[tempMarr removeObject:self]; //此時 的self 就是指 B ,因為在 B 中呢

[self.navigationController setViewControllers:tempMarr animated:YES];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弃理,一起剝皮案震驚了整個濱河市溃论,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌案铺,老刑警劉巖蔬芥,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梆靖,死亡現(xiàn)場離奇詭異控汉,居然都是意外死亡笔诵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門姑子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乎婿,“玉大人,你說我怎么就攤上這事街佑⌒霍幔” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵沐旨,是天一觀的道長森逮。 經(jīng)常有香客問我,道長磁携,這世上最難降的妖魔是什么褒侧? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谊迄,結(jié)果婚禮上闷供,老公的妹妹穿的比我還像新娘。我一直安慰自己统诺,他們只是感情好歪脏,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粮呢,像睡著了一般婿失。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啄寡,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天移怯,我揣著相機與錄音,去河邊找鬼这难。 笑死舟误,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的姻乓。 我是一名探鬼主播嵌溢,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹋岩!你這毒婦竟也來了赖草?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤剪个,失蹤者是張志新(化名)和其女友劉穎秧骑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡乎折,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年绒疗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骂澄。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡吓蘑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟冲,到底是詐尸還是另有隱情磨镶,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布健提,位于F島的核電站琳猫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏私痹。R本人自食惡果不足惜脐嫂,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侄榴。 院中可真熱鬧雹锣,春花似錦、人聲如沸癞蚕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桦山。三九已至攒射,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恒水,已是汗流浹背会放。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钉凌,地道東北人咧最。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像御雕,于是被迫代替她去往敵國和親矢沿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容