回答
假設通過「破壞」你實際上是指一個單元格被重用,只需在你的UITableViewCell
派生類中實現prepareForReuse
。
prepareForReuse
準備由表視圖的代表用於再使用可重複使用的小區。
- (void)prepareForReuse
討論
如果一個UITableViewCell對象是可重複使用的,也就是說,它具有回用 標識符 - 該方法是剛剛從UITableView的方法dequeueReusableCellWithIdentifier返回 對象之前調用的: 。對於 性能原因,您應該只重置 與內容無關的單元格的屬性,例如alpha,編輯和選擇 狀態。 tableView:cellForRowAtIndexPath: 中的表視圖委託應該在重用單元時始終重置所有內容。如果單元格 對象沒有關聯的重用標識符,則此方法爲 未調用。如果您重寫此方法,則必須確保調用超類實現。
可用性 適用於iOS 2.0及更高版本。 另請參見 - initWithFrame:方法reuseIdentifier: @property reuseIdentifier 宣佈 UITableViewCell.h
正確。這個影響很重要。 'prepareForReuse'消息在單元出池時發送,而不是在完成顯示時發送。這意味着它不能依賴於釋放單元實現保留的重量級資源。 –
您可以繼承UITableViewCell
並覆蓋它的dealloc
方法。
假設您正在重新使用單元格來保存資源,這樣做的好理由是什麼?
什麼你試圖攔截是內部實現的UITableView的一部分以及如何管理其細胞。雖然有些方法可以嘗試攔截此類行爲,但我建議您避免使用它們,因爲不能保證將來的UITableView實現將保持此行爲。
在這種情況下,考慮採用不同的方法會更好:設計並實現自己的表類或更改代碼邏輯。
如上所述,當離開屏幕時單元不會被破壞。不過,您可以執行一些操作,以跟蹤相關操作,具體取決於您嘗試執行的操作。
首先出現的是一個委託消息:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
這一個小區進入屏幕之前被調用。另一種可能性是已經提到的單元格的prepareForReuse方法。
另一種方法是:嘗試並覆蓋willMoveToSuperview:或任何其他相關方法。我不確定在單元變得不可見之後這是否被觸發,但它可能起作用。
最好的問候, 邁克爾
沒有進入適用性或性能的影響,另一個選擇可能是定期檢查哪些細胞保持可見,使用的UITableView類的visibleCells方法:
- (NSArray *)visibleCells
根據文檔:
返回包含UITableViewCell對象的數組,每個對象表示一個可見的ce在接收表視圖中。
- 1. EmberJS:當視圖被破壞時答應回調?
- 2. Java 1.6當被後臺調用時被破壞Symfony任務
- 3. 當PowerManager.goToSleep被調用時,活動被破壞
- 4. 當AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); HttpContext.Current.Session被破壞時。
- 5. 當視圖被破壞時CoreData泄漏
- 6. 當離開網站並回到它時,會話被破壞
- 7. 當android服務被破壞時調用web服務
- 8. JsApi有時會被破壞
- 9. CGContextRef被破壞?
- 10. SP.NavigationNode.get_isVisible()被破壞?
- 11. DeviceSumModuleF32被破壞
- 12. iOS:視覺格式約束被破壞
- 13. 當它被破壞後重新啓動活動時,onCreate不會被調用
- 14. 當共享指針被破壞?
- 15. 方法返回後內存被破壞
- 16. 線程被破壞?
- 17. 活動被破壞?
- 18. AJAX.BeginForm PostURL被破壞
- 19. CoreData NSManagedObject被破壞
- 20. JAVA_HOME被Maven破壞
- 21. 拍照時被破壞的活動
- 22. 殺死時的片段被破壞
- 23. 當任務擁有者被破壞時取消掛起的任務回調調用
- 24. rails回調before_create破壞after_validate的作品
- 25. 當一個特定的對象被改變時gdb:破壞
- 26. 當我打開我的個人熱點時,佈局被破壞
- 27. windows azure - 當角色被破壞時的事件
- 28. 當活動被破壞時來自Service的空指針異常
- 29. 當請求結束時被破壞的對象
- 30. 靜態對象被破壞時動態內存被破壞了嗎?
也許你應該把你的問題放在你真正想做的事情的背景中。我回答的問題是,當他們滾動時,不能保證細胞被破壞;他們通常被緩存以供重新使用。 –
http://stackoverflow.com/questions/3330735/detect-when-uitableviewcell-goes-out-of-scope – Lee