[英]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
dataSource
的tableView: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.