程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> ios-removeFromSuperview 不起作用了,奇怪問題

ios-removeFromSuperview 不起作用了,奇怪問題

編輯:編程解疑
removeFromSuperview 不起作用了,奇怪問題

簡單上代碼吧。
我在更新UIView時候需要先將其中已經存在的一些移除掉

         if ([NSThread currentThread] == [NSThread mainThread]){
            NSLog(@"before remove:%ld", [[self subviews] count]);
            [Helper removeAllSubViews:self];
            NSLog(@"after remove:%ld", [[self subviews] count]);
        }

Helper removeAllSubViews我就不貼代碼了,很簡單,獲取view的subviews,用foreach遍歷然後調用removeFromSuperview而已。
很明顯我這裡確定了這段代碼是主線程運行的,但是這樣執行仍然沒有效果。假如移除之前是4個subview,移除之後還是4個。然後我發現不斷更新過程中subview越來越多(每次累計的,沒有清除掉之前的),而且由於之前的沒有清空成功,全部疊加一起顯示特別亂套。
我還特別的看了下系統的注釋代碼,並沒有什麼特殊的說明什麼情況會移除失敗啊。

最佳回答:


竟然又是自己解決了問題,糾結了大半天。
原因很奇葩,是這樣的,剛才我想點擊進去removeFormSuperView,試試看看蘋果關於UIView的注釋。然後給我彈出了讓我選擇是哪一個removeFromSuperview.瞬間反應過來了,因為這個UIView的subviews是一個我自定義類型的UIView,我還在那個View裡自己重寫了removeFromSuperView.悲劇就這麼發生了。我忘記調用super了。怪不得。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved