當用戶向下滾動tableView時,單元正在出列並排隊。我的UITableViewCell如何知道它何時會被顯示和銷燬?
我想知道,在我的UITableViewCell裏發生這種情況。
如果這是不可能的,我們可以用通知中心來實現這一(使用表格視圖的代表?)
注:我想要的細胞本身知道什麼時候它被出隊。 我知道已經有2個UITableView的代表可以使用,但我寧願不使用它們。
當用戶向下滾動tableView時,單元正在出列並排隊。我的UITableViewCell如何知道它何時會被顯示和銷燬?
我想知道,在我的UITableViewCell裏發生這種情況。
如果這是不可能的,我們可以用通知中心來實現這一(使用表格視圖的代表?)
注:我想要的細胞本身知道什麼時候它被出隊。 我知道已經有2個UITableView的代表可以使用,但我寧願不使用它們。
我有類似的任務,我來用這個方法:
override func willMoveToSuperview(_ newSuperview: UIView?)
{
super.willMoveToSuperview(newSuperview)
if newSuperview != nil
{
// Cell will be added to collection view
}
else
{
// Cell will be removed
}
}
override func didMoveToSuperview()
{
// You can also override this method, check self.superview
}
我記得這些方法的工作更加穩定比prepareForReuse()
。但是委託方法無論如何都更加健壯。
在很多情況下,不幸的是,這不起作用 - 它已經在超級視圖中,並且表視圖系統將其滑入屏幕中... – Fattie
當一個單元格不再需要時,它將從UITableView
中刪除,爲了檢測何時發生這種情況,您可以覆蓋removeFromSuperView
方法。但是當你滾動時,單元格會被重用,所以你還需要在prepareForReuse中做同樣的清理。
至於檢測它何時被添加到表格視圖中,您可以添加一個configure
方法,該方法被cellForRowAtIndexPath:
調用,因爲很可能您需要實施cellForRowAtIndexPath:
。
class MyTableViewCell: UITableViewCell {
func configure(obj: MyDataObject) {
// intialize whathever you need
}
func doCleanup() {
// cleanup the stuff you need
}
override func removeFromSuperview() {
super.removeFromSuperview()
doCleanup()
}
override func prepareForReuse() {
super.prepareForReuse()
doCleanup()
}
}
這與您以前的問題有何不同? - http://stackoverflow.com/questions/34957992/in-uitableview-whats-the-delegate-for-visiblecells? – Paulw11
@ Paulw11這個問題在你所關聯的問題中確實有了答案。 TIMEX,請讓我們知道如果不是這種情況,否則問題可能會被重複關閉。 – Cristik