J'ai une section dans UITableView qui a plusieurs lignes. Je souhaite que la dernière ligne ou la dernière cellule de la section ajoute un indicateur de divulgation.
Une façon dont je pense utiliser est:
NSIndexPath *lastCellIndexPath = [NSIndexPath indexPathForItem:[self.tableView numberOfRowsInSection:2]-1 inSection:2];
Existe-t-il un autre moyen d'obtenir la cellule ou le chemin d'index de la dernière cellule d'une section?
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.
}
j'espère que ça aide.
Je l'ai fait dans tableView: willDisplayCell: forRowAtIndexPath: method
- (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;
}
}
}
Version rapide:
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.
}
Vous devriez le faire dans votre méthode cellForRowAtIndexPath
. Vous pouvez facilement détecter à quelle section appartient cette cellule et s'il s'agit de la dernière.
Vous pouvez l'obtenir à partir de votre source de données à partir de laquelle vous avez défini dans les méthodes de délégation, La source de données que vous affectez dans numberOfRowsInSection
méthode.
[arrayStores lastObject];
donc, dans la méthode cellForRowAtIndexPath
, vous pouvez facilement le vérifier,
Version Swift 4: -
let totalRow =
tableView.numberOfRows(inSection: indexPath.section)
if(indexPath.row == totalRow - 1)
{
return
}
Je me demande comment ça m'a manqué. La solution la plus simple est la suivante: j'ai écrit dans la méthode didSelectRowAtIndexPath en fonction de mes besoins.
if (indexPath.row ==userAccountsList.count-1)
{
NSLog(@"last row it is ");
}
Dans le code ci-dessus, userAccountsList est un tableau que nous passons à tableview.