Я занимаюсь разработкой приложения для iOS, которое имеет различные формы, которые заполняются в UITableview на основе выбора пользователей.Каждая форма имеет разные поля, такие как Textfield, DatePicker, PickerView.Поэтому я использовал один TableViewCell (nib), чтобы хранить все это и показывать или скрывать элементы, основанные на вопросе.Определена функция сохранения, которая будет сохранять значения при входе пользователя в массив.
Моя проблема заключается в том, что время от времени мой просмотр таблицы прокручивается так, как будто индекс выходит из-под контроля.например, когда я выбираю любое текстовое поле, Tableview прокручивается вверх.Я удалил все методы наблюдения за клавиатурой и проверил, что все еще происходит.
Ниже приведен код функции сохранения:
func saveFormValue(mystr: String) {
//selectedIndex is a global variable (NSIndexPath)
let dict = sections[selectedIndex!.section].questions![selectedIndex!.row]
dict.answer = mystr
sections[selectedIndex!.section].questions![selectedIndex!.row] = dict
let answer = updated_answer.init(ID: ID, form_id: selected_form_id, form_name: formName, section_id: dict.section_id ?? "",question_id: dict.question_id ?? "", question_name: dict.question_name!,question_type:dict.question_type!)
updatedArray.append(answer)
self.tableView.reloadData()
}
Это код в функции textfieldDidBeginEditing (как инициализируется selectedIndexPath):
guard let index = tableView.indexPath(for: cell) else {
return
}
selectedIndex = index as NSIndexPath
Я добавил делегата для ячейки, и я заметил одну вещь: эта проблема возникает всякий раз, когда я нажимаю один раз на pickerview или datepicker.Я не мог видеть эту проблему, если я только касаюсь только ячеек textField.
Пожалуйста, дайте мне знать для получения дополнительной информации.