push棧中獲取viewcontroller

本文參考:http://blog.csdn.net/weisubao/article/details/39640303 ,在此感謝

//可以手動(dòng)設(shè)置pop出棧,相當(dāng)于刪除這個(gè)頁面,跳轉(zhuǎn)到其他頁面

//popViewControllerAnimated就是彈出,因?yàn)閺棾鲋荒軓棾鲎钌厦娴臈m數(shù)哪莻€(gè),所以可以不用指定參數(shù)

//popToRootViewControllerAnimated-就是直接跳轉(zhuǎn)到根視圖控制圖,如果只有兩層,那么和popViewControllerAnimated并無區(qū)別,如果有很多層,那么其實(shí)就是相當(dāng)于不僅把自己pop出去,還把所有除了根視圖控制圖之外的所有視圖控制器都pop出去了,所以就相當(dāng)于跳轉(zhuǎn)到根視圖控制器了

//popToViewController-就是跳轉(zhuǎn)到指定的視圖控制器xxx,這個(gè)xxx一定要在這個(gè)棧里面,即一定是在我們當(dāng)前這個(gè)視圖控制器的下面的,所以跳轉(zhuǎn)也就是把自己和在xxx上面的所有視圖控制器都pop出去,然后相當(dāng)于直接跳轉(zhuǎn)到xxx

//此處重點(diǎn)是這個(gè)xxx怎么獲取,按照一般理解是用xxx再初始化一個(gè)視圖控制器對象yyy,然后把這個(gè)對象yyy作為popToViewController參數(shù)

//但事實(shí)是,yyy是新初始化的,不在棧中,當(dāng)然和在棧中的xxx初始化的那個(gè)對象也不是同一個(gè)對象,所以會報(bào)錯(cuò)(因?yàn)樵跅V姓也坏桨。?/p>

//所以,self.navigationController.viewControllers出場,viewControllers是個(gè)數(shù)組,儲存的時(shí)導(dǎo)航控制器棧中所有的視圖控制器,最先push進(jìn)去的時(shí)0,以此類推,最上面的肯定是數(shù)組的最后一個(gè)

//所以,那個(gè)xxx之前初始化的對象,可以用[self.navigationController.viewControllers objectAtIndex:0]表示,此處0就是根視圖控制器 ? [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];

//所以,只要拿到navigationController,貌似能做很多事情

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

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

  • (1)導(dǎo)航控制器初始化的時(shí)候一般都有一個(gè)根視圖控制器,導(dǎo)航控制器相當(dāng)于一個(gè)棧,里面裝的是視圖控制器,最先進(jìn)去的在最...
    Dorajimmy閱讀 3,368評論 0 0
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,707評論 2 4
  • 一點(diǎn)說明:本文中“導(dǎo)航控制器”區(qū)別于“視圖控制器”存在 UINavigationController UINavi...
    WeiHing閱讀 5,171評論 0 11
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,738評論 1 14
  • 身體真是非常直接、非常真誠的一條路,它不像心理和靈性那么難以捕捉,而且心理和靈性層面很容易出現(xiàn)自欺,但身體很少自欺...
    我就是那片云閱讀 373評論 0 0

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