iPad:遍歷UITableView中的每個單元格?iPad:遍歷UITableView中的每個單元格?
回答
for (int section = 0; section < [tableView numberOfSections]; section++) {
for (int row = 0; row < [tableView numberOfRowsInSection:section]; row++) {
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell* cell = [tableView cellForRowAtIndexPath:cellPath];
//do stuff with 'cell'
}
}
它只在可見細胞上工作!!!! – 2013-08-23 11:06:54
這是正常的,它只適用於可見細胞。不可見的細胞從記憶中出列; cellForRowAtIndexPath將返回零。 – 2013-09-24 11:08:25
@RaviSharma add [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];它將用於不可見的單元格。 – zaolian 2016-01-25 20:33:31
遍歷每一個可見的細胞在一個UITableView:
for (UITableViewCell *cell in self.tableView.visibleCells) {
NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell];
(編輯以更好的狀態答案,並希望這是更準確地編入索引的搜索結果與救人更多的時間在未來的意圖)
假設可變myTableView
存在並且其委託和數據源均設置:
UITableViewCell *cell;
NSIndexPath indexPath = [[NSIndexPath indexPathForRow:0 inSection:0];
for(indexPath.section = 0; indexPath.section < [myTableView numberOfSections]; ++indexPath.section)
{
for(indexPath.row = 0; indexPath.row < [myTableView numberOfRowsInSection:indexPath.section]; ++indexPath.row)
{
cell = [myTableView cellForRowAtIndexPath:indexPath];
// do something with this cell
}
}
(此基礎上aroths答案。)
我喜歡把它定義爲一個類別UITableView
所以它是隨處可見。
(如提過幾次,你應該確保你真的要遍歷細胞本身,例如:我使用它來將其設置爲選擇的用戶之前清除所有單元UITableViewAccessoryCheckmark
的。細胞一個好的經驗法則是要做到這一點只有在數據源的方法不能做你需要什麼)
定義是這樣的:
- (void)enumerateCellsUsingBlock:(void (^)(UITableViewCell *cell))cellBlock {
NSParameterAssert(cellBlock != nil);
for (int section = 0; section < [self numberOfSections]; section++) {
for (int row = 0; row < [self numberOfRowsInSection:section]; row++) {
NSIndexPath *cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell *cell = [self cellForRowAtIndexPath:cellPath];
if (cellBlock != nil) {
cellBlock(cell);
}
}
}
}
呼叫像這樣:
[self.tableView enumerateCellsUsingBlock:^(UITableViewCell *cell) {
NSLog(@"cell:%@", cell);
}];
鍵入block也是很好的風格。
甚至更簡單,更優雅:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath {
// use the "cell" here
}
但很明顯,它不適合所有的情況。
您在OC版本中的解決方案,僅供參考:[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO]; – zaolian 2016-01-25 20:33:53
- 1. 遍歷二維數組中的每個單元格
- 2. 循環遍歷範圍中的每個單元格
- 3. 循環遍歷UITableView中的單個UITableViewCells以編輯單元格中的文本
- 4. 遍歷UITableView中的自定義單元格
- 5. 遍歷的單元格區域中的每個單元賦予了Range對象
- 6. 在excel/csv表中循環遍歷每個單元格
- 7. 表格單元遍歷jQuery
- 8. VBA遍歷單元格
- 9. 遍歷每個元素
- 10. 使用jquery遍歷表格單元格
- 11. UITableView預加載每個單元格
- 12. UITableView重複每個單元格
- 13. UItableView單元格內容大小爲iPad
- 14. 的UITableView在每個單元
- 15. Excel VBA:遍歷DIV內容 - 粘貼到單個單元格中
- 16. Excel:循環遍歷一行單元格並打印每一行
- 17. 遍歷所有行並在表中的每次迭代中單擊每行的第二個單元格
- 18. 循環遍歷DataGridView單元格
- 19. Excel VBA - 遍歷範圍並在每個單元格中設置公式
- 20. UITableview單元格的值一遍又一遍地寫入問題?
- 21. 如何遍歷指定的單元格和每個列表的值
- 22. 如何遍歷每個單詞,ms-word?
- 23. 循環遍歷每個COLUMN並查找突出顯示的單元格
- 24. 如何遍歷codedui中的網格元素?獲取每個單元格的值時出現錯誤
- 25. 在iPad上隱藏UITableView的第一個單元格
- 26. 循環遍歷UITableView的UITableViewCells
- 27. 遍歷一個HTML表格元素
- 28. 在UItableview中爲每個單元格添加一個開關
- 29. UITableView的單元格中每行有多個圖像
- 30. 每節增加單元格值UITableView
無意義的問題,真的:細胞彙集並重用。一般來說,如果你沒有在屏幕上看到它,它就不存在。請詳細說明你正在嘗試做什麼。 – 2011-04-13 05:07:24
+1來評論,你爲什麼需要迭代單元格?通常你會遍歷你填充單元格的底層數據結構。如果由於某種原因需要訪問單元格,可以在'cellForRowAtIndexPath:'中設置基礎數據結構的'cell'屬性以指向初始化的單元格。請確保它是'@property(assign)',但不是'retain',因爲您不想將所有單元格保留在內存中以便重用。 – darvids0n 2011-04-13 05:18:40
這不是沒有意義的; UITableView作爲一些後備數據存儲的可視表示而存在。無論數據存儲的特定子集是否在屏幕上,數據存儲都存在。因此,迭代單元格與查詢存儲中的內容相當,即一次一行。 – aroth 2011-04-13 05:19:30