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