2016-08-25 55 views
0

我一直在嗅探尋找解決方案,但直到現在它還沒有結果。我想要做的是確定某個細胞是否從屏幕上消失。迅速確定某一行是否從視圖中消失

下面的代碼我一直在努力:

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 

    let indexPathWatchCell = NSIndexPath(forRow: 4, inSection: 0) 

    if ((tableView.indexPathsForVisibleRows?.contains(indexPathWatchCell)) == nil){ 
     NSLog("it disappeared!!") 
    } 
} 

遺憾的是它不工作,任何想法?

編輯:

爲清楚起見,我要做到的是小區設置到CGFloat的(44),當它在視野中消失

+0

當細胞從表 – pedrouan

+0

喔,刪除了此方法適用於知道「失蹤」比你可以使用!(不)。奇怪,當我使用!=無NSLog出現,有趣。任何想法來確定細胞是否從視野中消失? – Led

+0

嘗試使用UITableViewCell prepareForReuse():由於單元格在不可見時被重用。另請注意,出於性能方面的原因,表格視圖會將兩個單元格從觀看框架中取出(頂部一個,底部一個)。 –

回答

2

contains方法返回布爾值的大小,如果對象包含其他明智返回false,所以你需要檢查那個不是nil,所以要這樣改變你的代碼。

if (tableView.indexPathsForVisibleRows?.contains(indexPathWatchCell)){ 
    NSLog("it not disappeared!!") 
} 
else { 
    NSLog("it's disappeared!!") 
}  

或者,如果你只是想if

if (!tableView.indexPathsForVisibleRows?.contains(indexPathWatchCell)){ 
    NSLog("it disappeared!!") 
} 
+0

正是我所需要的,謝謝! – Led

+0

如果視圖中消失,我可以更改某個單元格的高度嗎? – Led

+0

如果該單元格消失,那麼由於該單元格當前在屏幕上不可見,而不是由於更改該單元格高度的原因。 –