web-dev-qa-db-fra.com

Obtenir la dernière cellule d'une section UITableview

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?

15
tech_human
    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;
45
johnMa
    - (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.
}
3
Unit Testing

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. 

3
sha

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,

1
Toseef Khilji

Version Swift 4: -

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

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. 

0