2013-12-16 2 views
12

У меня есть раздел в UITableView, который имеет несколько строк. Я хочу, чтобы последняя строка или последняя ячейка раздела добавили на нее индикатор раскрытия.Получить последнюю ячейку в разделе UITableview

Один из способов я имею в виду использовать это:

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

Есть ли другие лучший способ получить ячейку или indexpath последней ячейки на участке?

+0

Вы можете получить его от источника данных, из которого вы установили в методах делегата. –

ответ

39
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; 
1

Вы можете получить его от источника данных, из которого вы установили в методах делегата, источника данных вы назначаете в numberOfRowsInSection метода.

[arrayStores lastObject];

так в cellForRowAtIndexPath методе вы можете легко проверить это,

3

Вы должны сделать это внутри метода cellForRowAtIndexPath. Вы можете легко обнаружить, к какому участку принадлежит эта ячейка, и является ли он последним.

6
- (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; 

      } 


     } 


    } 
+0

Вы уверены, что не сделали опечатку в этой строке: '[NSIndexPath indexPathForRow: [NSIndexPath indexPathForRow:' ?? – sha

+0

А где этот код должен идти? – sha

+0

Пожалуйста, проверьте код сейчас –

0

Интересно, как я скучал его. Самое легкое решение здесь. Я написал в методе didSelectRowAtIndexPath в соответствии с моим требованием.

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

В приведенном выше коде userAccountsList представляет собой массив, который мы передаем в tableview.

1

Swift версия:

var totalRow = tableView.numberOfRows(inSection: indexPath.section) 
//first get total rows in that section by current indexPath. 
if indexPath.row == totalRow - 1 { 
    //this is the last row in section. 
} 
Смежные вопросы