Получить последнюю ячейку в разделе UITableview

У меня есть раздел в UITableView, который имеет несколько строк. Я хочу получить последнюю строку или последнюю ячейку раздела, чтобы добавить на нее индикатор раскрытия.

один из способов, который я думаю использовать:

NSIndexPath *lastCellIndexPath = [NSIndexPath indexPathForItem:[self.tableView numberOfRowsInSection:2]-1 inSection:2];

есть ли другой лучший способ получить ячейку или indexpath последней ячейки в разделе?

7 ответов


    NSInteger totalRow = [tableView numberOfRowsInSection:indexPath.section];//first get total rows in that section by current indexPath.
    if(indexPath.row == totalRow -1){
         //this is the last row in section.
    }

надеюсь, что это помогает.

Я сделал это в tableView: willDisplayCell: forRowAtIndexPath: метод

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

        //Section 0
        if (indexPath.section == 0) {

            // Is Last row?
            if ([dataSouceArray count] == (indexPath.row+1)) {
                //Yes

                cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;


            }
            else{
                // other rows

                cell.accessoryType = UITableViewCellAccessoryNone;

            }


        }


    }

вы должны сделать это внутри вашего cellForRowAtIndexPath метод. Вы можете легко определить, к какому разделу принадлежит эта ячейка и является ли она последней.


Swift версия:

let totalRows = tableView.numberOfRows(inSection: indexPath.section)
//first get total rows in that section by current indexPath.
if indexPath.row == totalRows - 1 {
    //this is the last row in section.
}

вы можете получить его из источника данных, из которого вы устанавливаете методы делегата, источник данных, назначенный в numberOfRowsInSection метод.

[arrayStores lastObject];

так cellForRowAtIndexPath метода вы можете легко проверить его,


интересно, как я пропустил это. Самое простое решение здесь.. Я писал в метод didSelectRowAtIndexPath по моему требованию.

if (indexPath.row ==userAccountsList.count-1)
{
    NSLog(@"last row it is ");
       }

в приведенном выше коде userAccountsList-это массив, который мы передаем в tableview.


Swift 4 версия: -

  let totalRow =
            tableView.numberOfRows(inSection: indexPath.section)
        if(indexPath.row == totalRow - 1)
        {
            return
        }