2016-01-23 54 views
-1

當用戶向下滾動tableView時,單元正在出列並排隊。我的UITableViewCell如何知道它何時會被顯示和銷燬?

我想知道,在我的UITableViewCell裏發生這種情況。

如果這是不可能的,我們可以用通知中心來實現這一(使用表格視圖的代表?)

注:我想要的細胞本身知道什麼時候它被出隊。 我知道已經有2個UITableView的代表可以使用,但我寧願不使用它們。

+5

這與您以前的問題有何不同? - http://stackoverflow.com/questions/34957992/in-uitableview-whats-the-delegate-for-visiblecells? – Paulw11

+1

@ Paulw11這個問題在你所關聯的問題中確實有了答案。 TIMEX,請讓我們知道如果不是這種情況,否則問題可能會被重複關閉。 – Cristik

回答

1

我有類似的任務,我來用這個方法:

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()。但是委託方法無論如何都更加健壯。

+0

在很多情況下,不幸的是,這不起作用 - 它已經在超級視圖中,並且表視圖系統將其滑入屏幕中... – Fattie

0

當一個單元格不再需要時,它將從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() 
    } 
} 
相關問題