UITableViewに複数の行があるセクションがあります。セクションの最後の行または最後のセルを取得して、そこに開示インジケーターを追加したいと思います。
私が使用することを考えている1つの方法は:
NSIndexPath *lastCellIndexPath = [NSIndexPath indexPathForItem:[self.tableView numberOfRowsInSection:2]-1 inSection:2];
セクションの最後のセルのセルまたはインデックスパスを取得する他の最良の方法はありますか?
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;
}
}
}
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.
}
これはcellForRowAtIndexPath
メソッド内で行う必要があります。このセルがどのセクションに属しているか、および最後のセルかどうかを簡単に検出できます。
Swift 4バージョン:-
let totalRow =
tableView.numberOfRows(inSection: indexPath.section)
if(indexPath.row == totalRow - 1)
{
return
}
どうしてそれを逃したのかしら。最も簡単な解決策はこちらです。要件に応じて、didSelectRowAtIndexPathメソッドを記述しました。
if (indexPath.row ==userAccountsList.count-1)
{
NSLog(@"last row it is ");
}
上記のコードでは、userAccountsListは配列で、tableviewに渡しています。
デリゲートメソッドで設定したデータソース、numberOfRowsInSection
メソッドで割り当てたデータソースから取得できます。
[arrayStores lastObject];
cellForRowAtIndexPath
メソッドで簡単に確認できます。