При редактировании 'UITableView' не называет didSelectRowAtIndexPath??

У меня есть 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

45
задан Benjohn 4 June 2014 в 10:51
поделиться

3 ответа

Для свойства allowsSelectionDuringEditing объекта UITableView необходимо задать значение true.

Ссылка: UITableView - allowsSelectionDuringEditing

124
ответ дан 26 November 2019 в 20:57
поделиться

, но как только я нажимаю кнопку редактирования и пока редактирование активно, этот метод не работает. вроде бы вызвали.

Есть идеи, что мне не хватает?

Да. Ожидается, что 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: .

-2
ответ дан 26 November 2019 в 20:57
поделиться

Устанавливаете ли вы self.editing = YES при нажатии кнопки редактирования?

В режиме редактирования вызывается этот метод вместо didSelectRow при касании строки:

tableView:commitEditingStyle:forRowAtIndexPath:.
0
ответ дан 26 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: