我需要遍历TableView中的所有单元格,并在按下按钮时为cell.imageView
设置图像。我试图通过
[[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
但我需要细胞计数。
如何在TableView中查找单元格数?
答案 0 :(得分:41)
int sections = [tableView numberOfSections];
int rows = 0;
for(int i=0; i < sections; i++)
{
rows += [tableView numberOfRowsInSection:i];
}
总行数=行数;
答案 1 :(得分:16)
所有单元格(在一个部分中)的总数应该是
返回的内容- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
但是这个方法正在计算中,你也可以用你自己的方法来实现。可能类似于return [myArrayofItems count];
答案 2 :(得分:6)
UITableView
仅用于查看从数据源获取的数据。
单元格总数是属于数据源的信息,您应该从那里访问它。
UITableView
拥有足够的单元格以适合您可以使用
- (NSArray *)visibleCells
一个肮脏的解决方案是维护您创建的每个UITableViewCell
的单独数组。它有效,如果你的细胞数量很少,那就不那么糟了。
然而,这不是一个非常优雅的解决方案,我个人不会选择这个,除非绝对没有办法。如果没有相应的数据源更改,最好不要修改表中的实际单元格。
答案 3 :(得分:4)
基于Biranchi的代码,这里有一个小片段,可以检索每个细胞。 希望这可以帮到你!
UITableView *tableview = self.tView; //set your tableview here
int sectionCount = [tableview numberOfSections];
for(int sectionI=0; sectionI < sectionCount; sectionI++) {
int rowCount = [tableview numberOfRowsInSection:sectionI];
NSLog(@"sectionCount:%i rowCount:%i", sectionCount, rowCount);
for (int rowsI=0; rowsI < rowCount; rowsI++) {
UITableViewCell *cell = (UITableViewCell *)[tableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:rowsI inSection:sectionI]];
NSLog(@"%@", cell);
}
}
答案 4 :(得分:1)
Swift 3.1 (截至2017年7月13日)
let sections: Int = tableView.numberOfSections
var rows: Int = 0
for i in 0..<sections {
rows += tableView.numberOfRows(inSection: i)
}
答案 5 :(得分:0)
Swift 3等效示例
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
}else if section == 1 {
return timesArray.count // This returns the cells equivalent to the number of items in the array.
}
return 0
}
答案 6 :(得分:0)
UITableView
的扩展名,用于获取总行数。写在Swift 4中
extension UITableView {
var rowsCount: Int {
let sections = self.numberOfSections
var rows = 0
for i in 0...sections - 1 {
rows += self.numberOfRows(inSection: i)
}
return rows
}
}