2014-01-03 2 views
0

У меня есть таблица, разделенная на динамически изменяющиеся по алфавиту разделы. Когда я нажимаю на ячейку, я хочу, чтобы она расширялась.iOS - Найти индекс ячейки в секции

Что происходит, когда я, например, выбираю cell1 в разделе 2, открывается каждая ячейка1 в каждом разделе.

Я знаю, что мне нужно получить значение indexpath.section и indexpath.row в файле didselectrowforindexpath, но как?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
NSString* letter = [letters objectAtIndex:indexPath.section]; 
NSArray* arrayForLetter = (NSArray*)[filteredTableData objectForKey:letter]; 
shu = (ShuDict*)[arrayForLetter objectAtIndex:indexPath.row]; 

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 

    if (!self.detailViewController) { 
     self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPhone" bundle:nil]; 
    } 
    [self.navigationController pushViewController:self.detailViewController animated:YES]; 
} else { 

    NSString* letter = [letters objectAtIndex:indexPath.section]; 
    NSArray* arrayForLetter = (NSArray*)[filteredTableData objectForKey:letter]; 
    shu = (ShuDict*)[arrayForLetter objectAtIndex:indexPath.row]; 
    NSLog(@"%@",shu); 
    self.detailViewController.detailItem = shu.description; 
    self.detailViewController.title = shu.title; 

} 

    if (selectedRow == indexPath.row) { 
     lblDecs.hidden=NO; 
     selectedRow = -1; 

    } 
    else{ 
     lblDecs.hidden = YES; 
     selectedRow = indexPath.row; 

    } 

    [tableView reloadData]; 
} 

Так что это мой метод didSelectRowAtIndexPath. Я думаю, что проблема выбранаRow == indexpath.row, потому что она не включает индекс раздела?

+0

вы можете показать нам, как, 1. Метод сортировки работает 2. Как работает расширение (разве это флаг, который был расширен, а затем перезагрузите таблицу?) , пожалуйста, спасибо! :) –

+0

Я видел это решение. Это не работает для меня – SirJoeyMichaels

ответ

0

Я думаю, что «lblDecs» является общим. он не меняется при выборе любой ячейки

// Original code 
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     . 
     . 
     . 
     . 
    if (selectedRow == indexPath.row) { 
     lblDecs.hidden=NO; 
     selectedRow = -1; 

    } 
    else{ 
     lblDecs.hidden = YES; 
     selectedRow = indexPath.row; 

    } 
} 

Таким образом, вы можете сразу показать lblDecs

lblDecs.hidden=NO; 

и спрячьте в методе

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    lblDecs.hidden=YES; 
} 

если lblDecs отличается от использования этой

if ((selectedRow == indexPath.row) && (selectedSection == indexPath.section)) { 
     . 
     . 
     . 
} 
+0

Спасибо человеку, if ((selectedRow == indexPath.row) && (selectedSection == indexPath.section)) то, что мне нужно! Большая любовь! – SirJoeyMichaels

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