Properly, настраивающий willSelectRowAtIndexPath и didSelectRowAtIndexPath для отправки выборы ячейки

Чувствуйте, что я иду немного сумасшедший сюда. У меня есть представление детали с некоторыми автономными UITextFields, некоторые UITextFields в UITAbleViewCells, и один сингл UITableViewCell это будет использоваться для содержания примечаний, если будет кто-либо. Я только хочу эту ячейку, можно выбрать, когда я нахожусь в режиме редактирования. Когда я не нахожусь в режиме редактирования, я не хочу мочь выбрать его. Выбор ячейки (в то время как в режиме редактирования) запустит метод, который будет init новое представление. Я знаю, что это очень легко, но я пропускаю что-то где-нибудь.

Вот текущие методы выбора, которые я использую:

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.editing) {
        NSLog(@"Returning nil, not in edit mode");
        return nil;
    }
    NSLog(@"Cell will be selected, not in edit mode");
    if (indexPath.section == 0) {
        NSLog(@"Comments cell will be selected");
        return indexPath;
    }
    return nil;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.editing) {
        NSLog(@"Not in edit mode. Should not have made it this far.");
        return;
    }

    if (indexPath.section == 0)
        [self pushCommentsView];
    else
        return;
}

Моей проблемой являются действительно 2 сгиба;

1) Даже когда я не нахожусь в режиме редактирования, и я знаю, что возвращаюсь nil (из-за NSLog сообщение), я могу все еще выбрать строку (это высвечивается синий). От моего понимания willSelectRowAtIndexPath метод, этого не должно происходить. Возможно, я неправ относительно этого?

2) Когда я ввожу режим редактирования, я не могу выбрать ничего вообще. willSelectRowAtIndexPath метод никогда не стреляет, и ни один не делает didSelectRowAtIndexPath. Единственная вещь я выполняю setEditing метод, скрывает кнопку "Назад" при редактировании и присвоение firstResponder к главному текстовому полю, чтобы заставить клавиатуру открываться. Я думал, возможно, что первый респондент мешал щелчку (который будет немым), но даже с прокомментированным, я не могу выполнить выбор ячейки во время редактирования.

10
задан Gordon Fontenot 5 May 2010 в 17:13
поделиться

2 ответа

Господи, я идиот. Я никогда не добавлял эти строки:

self.tableView.allowsSelection = NO; // Keeps cells from being selectable while not editing. No more blue flash.
self.tableView.allowsSelectionDuringEditing = YES; // Allows cells to be selectable during edit mode.

Простите за мусорный вопрос.

16
ответ дан 3 December 2019 в 19:32
поделиться

В документации отмечается, что tableView: willSelectRowAtIndexPath: не вызывается в режиме редактирования. Кроме того, синяя вспышка будет происходить, даже если вы отмените выбор. Из документации:

Этот метод не вызывается, пока пользователь не коснется строки, а затем поднимет палец; строка не будет выбрана до тех пор, хотя она выделяется при касании. Вы можете использовать UITableViewCellSelectionStyleNone, чтобы отключить отображение выделения ячейки при касании. Этот метод не вызывается, если для свойства редактирования таблицы установлено значение YES (то есть представление таблицы находится в режиме редактирования).

4
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

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