Как найти количество ячеек в UITableView - PullRequest
20 голосов
/ 15 февраля 2011

Мне нужно перебрать все ячейки в TableView и установить изображение для cell.imageView, когда я нажимаю кнопку.Я пытаюсь получить каждую ячейку по

[[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

Но мне нужно количество ячеек.

Как найти количество ячеек в TableView?

Ответы [ 7 ]

41 голосов
/ 16 марта 2011
int sections = [tableView numberOfSections]; 

int rows = 0; 

for(int i=0; i < sections; i++)
{
    rows += [tableView numberOfRowsInSection:i];
}

Общее количество строк = строк;

16 голосов
/ 15 февраля 2011

общее количество всех ячеек (в секции) должно быть равно количеству, возвращаемому

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

однако этот метод получает счет, вы можете сделать это и своими методами. Вероятно, что-то вроде return [myArrayofItems count];

6 голосов
/ 15 февраля 2011

UITableView предназначен только для просмотра ваших данных, взятых из источника данных. Общее количество ячеек - это информация, которая принадлежит источнику данных, и вы должны получить к ней доступ оттуда. UITableView содержит достаточно ячеек, чтобы поместиться на экране, доступ к которому можно получить с помощью

- (NSArray *)visibleCells

Одно грязное решение - поддерживать отдельный массив для каждого UITableViewCell, который вы создаете. Это работает, и если у вас мало клеток, это не так уж плохо.

Однако это не очень элегантное решение, и лично я бы не выбрал его, если бы не было абсолютно другого пути. Лучше, чтобы вы не изменяли фактические ячейки в таблице без соответствующего изменения в источнике данных.

4 голосов
/ 16 сентября 2011

на основе кода Биранки, вот небольшой фрагмент, который извлекает каждую сквозную ячейку.Надеюсь, это поможет вам!

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);
    }
}
2 голосов
/ 14 июля 2017

Swift 3.1 (по состоянию на 13 июля 2017 г.)

let sections: Int = tableView.numberOfSections
var rows: Int = 0

for i in 0..<sections {
    rows += tableView.numberOfRows(inSection: i)
}
0 голосов
/ 09 февраля 2018

Расширение для 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
    }
}
0 голосов
/ 11 июля 2017

Пример 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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...