2014-12-08 3 views
0

Как вы можете видеть на картинке, приведенной ниже, при выборе первой строки выбранный индекс строки возвращает 0. Когда я выбираю вторую строку, он также возвращает 0, а когда я выбираю третью строку, она возвращает 1.selectedIndexPath в разделе UITableView

Почему это и как я могу определить, что на самом деле выбрано?

picture

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSIndexPath *selectedRowIndexPath = [tableView indexPathForSelectedRow]; 
    int selectedSection = selectedRowIndexPath.section; 

    NSInteger i =0; 
    for (NSInteger j = 0; j <= selectedSection; ++j) 
    { 
     for (i=0; i < [tableView numberOfRowsInSection:j]; ++i) 
     { 

     } 
    } 
} 
+0

Просьба поместить изображение, которое вы указали по адресу http://s5.picofile.com/file/8156035284/Screen_Shot_2014_12_08_at_7_20_51_AM.png, в фактическое отображение в вопросе. Лучше не иметь таких вещей, зависящих от ресурсов non-stackoverflow, поскольку они могут исчезнуть, что делает этот вопрос гораздо менее понятным в будущем. Чтобы сделать это, отредактируйте вопрос и нажмите значок изображения, который содержит три значка справа от того, на который вы нажали, чтобы добавить ссылку. Затем вы можете указать ссылку в качестве веб-сайта. Я не просто редактировал его, так как авторское право не позволяет _me_ делать это. – Makyen

ответ

0

Это потому, что вы должны смотреть на секциях.

Это действительно первый ряд, но секции 0, 1 и т.д. секции

обобщать, то есть строки 0 столько, сколько у вас есть секции (предполагается, что у вас есть строки в каждой секции).

Раздел 0 (Пусть скажем А, так как у вас есть что-то вроде телефонной книги):

  • Авраам Линкольн (строка 0)
  • Аладин с lattern (строка 1)
  • Абракадабра (Ряд 2)

Раздел 1 (Буква б)

  • Боб (ро W 0)
  • Brandley (строка 1)

Раздел 2 (буква C):

  • Синди (строка 0)
  • Cinemon (строка 1)
  • Cayonara (строка 2)

Код:

NSInteger rowNumber = 0; 

for (NSInteger i = 0; i < indexPath.section; i++) { 
    rowNumber += [self tableView:tableView numberOfRowsInSection:i]; 
} 

rowNumber += indexPath.row; 
+0

так как я могу получить индекс правой строки? –

+1

Это правильно ... если вам нужна очень первая строка, тогда вам нужно проверить indexPath.section == 0 && indexPath.row == 0. Поэтому в вашем случае вам нужно проверить оба раздела и строку – Miknash

+0

, но у меня есть 28 раздел в моем представлении таблицы (изображение образца), пожалуйста, поставьте пример –

0

Это разные разделы.
Строка начинается с индекса 0 в каждом разделе.
IndexPath имеет два компонента: секцию и строку.

Смежные вопросы