Ваша проблема полностью логична и не требует изменений в вашем коде.Когда вы сортируете массив tableView
, тривиально, что didSelectRowAtIndexPath
портится при выборе строк.
Это может быть потому, что вы реализовали что-то вроде
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
if (indexPath.row ==0)
// PushViewController to view 1 //
if (indexPath.row ==1)
// PushViewController to view 2 //
}
if (indexPath.section ==1)
// Do something like before
Еслиэто ваш случай, тогда да, когда вы сортируете tableView, вы будете толкать контроллеры представления ПЛОХОЙ ПУТЬ.
Я предлагаю вам взять некоторые свойства в каждой строке и проверить это, нажимая контроллеры представления.Например, если у вас ... (скажем) есть строка 1, которая должна быть определенной буквой, цифрой или словом, вы можете проверить это и соответственно нажать pushViewController.
Но это будет работать, только если вы знаете,все элементы в tableView
(не говоря уже о сортировке).
Вы можете проверить что-то вроде ...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if (selectedCell.textLabel.text = @"1")
// push view controller to view 1
if (selectedCell.textLabel.text isEqualToString: self.lifeStyle)
// push view controller to lifeStyleViewController
// here lifeStyle is a NSString property //
Вы можете проверить что угодно, если вы логически устанавливаете и присваиваете свои свойствав методе cellForRowAtIndexPath
и логически установите его таким образом, чтобы при выполнении tableView reloadData
после сортировки поток didSelect
оставался таким же.
Дайте нам знать, если у вас все еще есть проблемы.