你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS開發中兩個常見問題的處理

iOS開發中兩個常見問題的處理

編輯:IOS開發基礎

1.jpg

(一) “Unknown class XXViewController in Interface Builder file.” 問題處理

最近在靜態庫中寫了一個XXViewController類,然後在主工程的xib中,將xib的類指定為XXViewController,程序運行時,報了如下錯誤:

Unknown class XXViewController in Interface Builder file.

之前也遇到這個問題,但已記得不太清楚,所以又開始在stackoverflow上找答案。

其實這個問題與Interface Builder無關,最直接的原因還是相關的symbol沒有從靜態庫中加載進來。這種問題的處理就是在Target的”Build Setting”–>“Other Link Flags”中加上”-all_load -ObjC”這兩個標識位,這樣就OK了。

(二)關於Unbalanced calls to begin/end appearance transitions for …問題的處理

我們的某個業務有這麼一個需求,進入一個列表後需要立馬又push一個web頁面,做一些活動的推廣。在iOS 8上,我們的實現是一切OK的;但到了iOS 7上,就發現這個web頁面push不出來了,同時控制台給了一條警告消息,即如下:

Unbalanced calls to begin/end appearance transitions for ...

在這種情況下,點擊導航欄中的返回按鈕時,直接顯示一個黑屏。

我們到stackoverflow上查了一下,有這麼一段提示:

occurs when you try and display a new viewcontroller before the current view controller is finished displaying.

意思是說在當前視圖控制器完成顯示之前,又試圖去顯示一個新的視圖控制器。

於是我們去排查代碼,果然發現,在viewDidLoad裡面去做了次網絡請求操作,且請求返回後就去push這個web活動推廣頁。此時,當前的視圖控制器可能並未顯示完成(即未完成push操作)。

Basically you are trying to push two view controllers onto the stack at almost the same time.

當幾乎同時將兩個視圖控制器push到當前的導航控制器棧中時,或者同時pop兩個不同的視圖控制器,就會出現不確定的結果。所以我們應該確保同一時間,對同一個導航控制器棧只有一個操作,即便當前的視圖控制器正在動畫過程中,也不應該再去push或pop一個新的視圖控制器。

所以最後我們把web活動的數據請求放到了viewDidAppear裡面,並做了些處理,這樣問題就解決了。

參考

  1. “Unbalanced calls to begin/end appearance transitions for DetailViewController” when pushing more than one detail view controller

  2. Unbalanced calls to begin/end appearance transitions for UITabBarController

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved