Получить последнюю ячейку в разделе 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
}