情形一:
MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease]; [self.navigationController pushViewController: sampleViewController animated:true];
BUG:界面無反響
剖析能夠失足的緣由:
1:self.navigationController為nil,空指針履行pushViewController直接跳過,接著sampleViewController會釋放失落,所以界面會無反響。
self.navigationController為神馬會空呢?navigationController是UIViewController父類繼續來的屬性,不是隨意都能用的,除非你以後viewController是被nav push出去的,或許用xib/代碼做成navigationcontroller的root了,cocoa的代碼應當是給賦值了。(題外話,我許多界面就是部分用了某個ViewController,這類情形該viewController的nav為空,假如要准確應用,可以從app取,可以本身賦值,可以全體界面取。。。想咋取都行)
2、self.navigationController為nil,界面掛了
假如你sampleViewController用到了收集異步要求,在initWithXXX的時刻會去取數,那末你10有89會掛失落。
緣由剖析:年夜家收集要求,常常以下:
TwitterClient *twitterClient = [[TwitterClient alloc] initWithtarget:self action:@selector(XXXReceive:obj:)]; [twitterClient getXXX:param];
祝賀你,這類情形不論是否是navigationController為空,你法式極輕易掛失落,緣由就是由於收集要求我們都邑用異步方法來拉取數據,當數據回來以後,會回調到本類的XXXReceive:obj辦法,然則假如界面加入了,數據才收到將若何?那就是否是空指針挪用了,TwitterClient裡記載的須要回調的內存地址上神馬情形都有能夠是,回調。。杯具了
處理方法:twitterClient做成成員,在析構的時刻該咋整理twitterClient的就咋整理一下吧
3、self.navigationController為nil,界面掛了
和上文一樣twitterClient成員了,dealloc也清算了現場,照樣會掛
緣由剖析:異步的成績,twitterClient曾經取到數據,然則sampleViewController曾經被釋放了,but dealloc基本沒來得及出去。。。
處理方法,1:確保nav准確,2:盡可能在界面viewDidLoad的時刻收集要求數據,在dispear的時刻清算收集。
情形二:
reason: 'Pushing a navigation controller is not supported'
報下面的毛病,緣由是:
年夜家曉得,可以將ViewController push到一個 NavigationController中。就像是入棧操作!
將一個NavigationController再次push到NavigationController中時,報錯,出現了
reason: 'Pushing a navigation controller is not supported'的毛病。
應當是,NavigationController不支撐push進來的對象是NavigationController吧。
修正辦法是:將要進入的頁面不去繼續UINavigationController
情形三:
有時刻項目裡會有一種新聞推送, 就是彈出提醒用戶新聞, 而新聞中帶有鏈接, 當你點擊銜接時不克不及跳轉,這類情形是由於你的self.navigationController = nil 形成的,由於你彈窗的誰人掌握器沒有效UINavigationController包裝
以上所述是小編給年夜家引見的IOS 開辟中 NavigationController常常湧現的成績緣由剖析,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對本站網站的支撐!
【iOS 開辟中 NavigationController常常湧現的成績緣由剖析】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!