Swift UITableview редактировать различные значения в текстовых полях - PullRequest
0 голосов
/ 21 октября 2019

Я заранее прошу прощения, если об этом уже спрашивали, но я не могу найти то, что ищу. Так что, если вы можете указать мне правильное направление, это поможет.

Итак, у меня есть UIViewController, в котором будет UITableview с 4 разными ячейками. Каждый с различными значениями, и каждая ячейка будет иметь 1 UITextField и 1 UILabel. У меня есть UIBarButtonItem, который позволит мне редактировать или сохранять данные. В конце концов запись новых данных в базу данных. моя проблема в том, что я не уверен, как редактировать данные в UITextField. Я не уверен, с чего начать. Ниже приведен скриншот того, что я описал выше. Левая сторона имеет UILabel, а правая - UITextfield. Все значения будут проверены другой функцией, чтобы убедиться, что они верны. Я просто хочу изменить значение полей по мере необходимости, а затем сохранить данные. Не уверен, как на самом деле извлечь значения за пределами cellForRowAt. Все остальное работает, как только я исправлю эту проблему, я смогу заставить все работать.

1

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Это можно сделать с помощью делегата от Cell к вашему VC (тот, у которого TableView внутри). Когда значение текстового поля изменится, вызовите свой делегат и передайте ячейку и, возможно, строковое значение внутри текстового поля. В родительском VC вы получаете ячейку, легко находите ее индекс и обновляете свою модель.

В пользовательском классе своей ячейки

protocol ProtocolName{
  func  FunctionName(c:UITableViewCell,val:String)
}
...
var delegate:ProtocolName!
  @IBAction  func textFieldDidBeginEditing(textField: UITextField) {
       delegate.FunctionName(self,textfield.text)
    }

В родительском VC убедитесь, что высоответствует вашему ProtocolName, тогда

func  FunctionName(c:UITableViewCell,val:String){
    if let index = tableview.indexPath(for cell: c){
     // Update your model based on the index and val which is whatever is in the textfield of that cell. You can also reload data here
     }
}
0 голосов
/ 21 октября 2019

Вы можете хранить все ячейки в одном массиве. Если вы хотите получить доступ к данным UITextField, вы можете получить все текстовые поля из этого массива. Вы можете присвоить тег UITextField как textField.tag = indexPath.row. Так что вы можете добавить различные условия для каждого UITextField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...