Чувствуйте, что я иду немного сумасшедший сюда. У меня есть представление детали с некоторыми автономными UITextField
s, некоторые UITextFields
в UITAbleViewCell
s, и один сингл 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
к главному текстовому полю, чтобы заставить клавиатуру открываться. Я думал, возможно, что первый респондент мешал щелчку (который будет немым), но даже с прокомментированным, я не могу выполнить выбор ячейки во время редактирования.
Господи, я идиот. Я никогда не добавлял эти строки:
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.
Простите за мусорный вопрос.
В документации отмечается, что tableView: willSelectRowAtIndexPath:
не вызывается в режиме редактирования. Кроме того, синяя вспышка будет происходить, даже если вы отмените выбор. Из документации:
Этот метод не вызывается, пока пользователь не коснется строки, а затем поднимет палец; строка не будет выбрана до тех пор, хотя она выделяется при касании. Вы можете использовать UITableViewCellSelectionStyleNone, чтобы отключить отображение выделения ячейки при касании. Этот метод не вызывается, если для свойства редактирования таблицы установлено значение YES (то есть представление таблицы находится в режиме редактирования).