如何在UITableView中找到Cell的数量

时间:2011-02-15 09:57:11

标签: uitableview

我需要遍历TableView中的所有单元格,并在按下按钮时为cell.imageView设置图像。我试图通过

获取每个细胞
[[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

但我需要细胞计数。

如何在TableView中查找单元格数?

7 个答案:

答案 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
    }
}