Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

int sections = [tableView numberOfSections]; 

int rows = 0; 

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

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

Ответ 3

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

- (NSArray *)visibleCells

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

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

Ответ 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);
    }
}

Ответ 5

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

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

for i in 0..<sections {
    rows += tableView.numberOfRows(inSection: i)
}

Ответ 6

Пример эквивалентности 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
    }