Ответ 1
Вы должны установить для свойства allowSelectionDuringEditing UITableView значение true... здесь ссылка UITableView ref
У меня есть UITableViewController
, где пользователь должен иметь возможность редактировать элементы. Чтобы включить редактирование, я использую это:
self.navigationItem.rightBarButtonItem = self.editButtonItem;
Для всех, кто не знает, откуда приходит self.editButtonItem, он предопределен SDK.
Итак, теперь, когда я нажимаю на любой элемент, этот метод называется:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
но как только я нажму кнопку редактирования и, пока редактирование будет активным, этот метод, похоже, не вызван.
Любая идея, что я пропущу?
Это остальная часть кода, связанного с редактированием:
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleNone;
}
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
return NO;
}
Спасибо за помощь.
MCB
Вы должны установить для свойства allowSelectionDuringEditing UITableView значение true... здесь ссылка UITableView ref
Вы устанавливаете self.editing = YES
при нажатии кнопки редактирования?
Когда в режиме редактирования этот метод вызывается, вместо didSelectRow, когда вы нажимаете строку:
tableView:commitEditingStyle:forRowAtIndexPath:.
Я решил эту проблему другим способом. Моя кнопка "Редактировать" была на моей панели навигации, и именно по этой причине она не была вызвана. После того, как я встроил VC в контроллер навигации и поместил новую кнопку "Редактировать" внутри своего элемента навигации, кнопка "Создать" начала вызываться.
но как только я нажму кнопку редактирования и, пока редактирование будет активным, этот метод, похоже, не вызван.
Любая идея, что мне не хватает?
Да. Ожидается, что tableView:didSelectRowAtIndexPath:
будет вызываться, когда нажата кнопка в вашей навигационной панели. Это никогда не произойдет. Этот метод вызывается только при выборе строки.
Когда кнопка редактирования будет нажата, вы захотите перевести вашу таблицу в режим редактирования. В вашем представлении контроллер:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated]; // must be called first according to Apple docs
[self.tableView setEditing:editing animated:animated];
}
Затем вы обрабатываете редактирование событий, добавляя метод tableView:commitEditingStyle:forRowAtIndexPath:
.