web-dev-qa-db-ja.com

UITableviewセクションの最後のセルを取得する

UITableViewに複数の行があるセクションがあります。セクションの最後の行または最後のセルを取得して、そこに開示インジケーターを追加したいと思います。

私が使用することを考えている1つの方法は:

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

セクションの最後のセルのセルまたはインデックスパスを取得する他の最良の方法はありますか?

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.
    }

それが役に立てば幸い。

tableView:willDisplayCell:forRowAtIndexPath:メソッドでこれを行いました

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
44
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;

            }


        }


    }

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.
}
3
Unit Testing

これはcellForRowAtIndexPathメソッド内で行う必要があります。このセルがどのセクションに属しているか、および最後のセルかどうかを簡単に検出できます。

2
sha

Swift 4バージョン:-

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

どうしてそれを逃したのかしら。最も簡単な解決策はこちらです。要件に応じて、didSelectRowAtIndexPathメソッドを記述しました。

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

上記のコードでは、userAccountsListは配列で、tableviewに渡しています。

デリゲートメソッドで設定したデータソース、numberOfRowsInSectionメソッドで割り当てたデータソースから取得できます。

[arrayStores lastObject];

cellForRowAtIndexPathメソッドで簡単に確認できます。

0
Toseef Khilji