簡體   English   中英

iOS SDK:如何在表格視圖中獲取不可見的單元格?

[英]iOS SDK: How to get a cell in a table view that is not visible?

如何獲取當前在表中不可見的indexPath的單元格? (單元格超出范圍)

獲取我的手機的代碼:

NSString *name = [[(ELCTextfieldCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] rightTextField] text];

-cellForRowAtIndexPath...返回nil因為所需indexPath處的單元格超出范圍。 那么我如何獲得正確的細胞而不是零呢?

UITableView僅保留可見單元格。 如果你需要一個不可見的,你必須調用UITableView dataSourcetableView:cellForRowAtIndexPath: . 所以,如果self是一個類dataSource

UITableViewCell * cell = [self tableView:table cellForRowAtIndexPath:indexPath];

這不是它的工作原理。 您需要在輸入或更改信息后立即獲取並存儲信息。 它可能很容易超出范圍,您不能保證您的細胞壽命足夠長。 好吧,從技術上講,你可以抓住它(並且總是為相同的索引路徑返回相同的單元格),但我會質疑那個設計。

UITableViewCells可以重復使用/回收,用戶不需要創建比可見數量更多的單元格。 您通常不需要訪問不可見的單元格。 您應該可以訪問數據源並在那里獲取/設置相應的數據。 單元格用於顯示數據源的某些狀態。 不是數據源本身:)

編輯:

你說你需要上面一個單元格的一些信息(文本),對吧? 如果使用cellForRowAtIndexPath:方法,將重新創建單元格,但您可能無法獲取文本字段中的文本。 原因? 因為可能你沒有把它保存在其他地方。 如果你確實保存了它,那么直接訪問它而不是通過單元格。

繼續@ Raphael的回答,這是(工作) swift 3解決方案:

UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)

填充表格的信息是否來自陣列? 難道你不能在0索引處直接將數據拉出數組,與你的cellForRowAtIndexPath相同,可能會在顯示時檢索並填充該單元格嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM