У меня есть a 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
Для свойства allowsSelectionDuringEditing объекта UITableView необходимо задать значение true.
, но как только я нажимаю кнопку редактирования и пока редактирование активно, этот метод не работает. вроде бы вызвали.
Есть идеи, что мне не хватает?
Да. Ожидается, что 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:
.
Устанавливаете ли вы self.editing = YES
при нажатии кнопки редактирования?
В режиме редактирования вызывается этот метод вместо didSelectRow при касании строки:
tableView:commitEditingStyle:forRowAtIndexPath:.