2017-02-09 1 views
0

У меня есть tableView внутри UIView, в этом табличном представлении есть три кнопки, одна из которых уже работает, а зеленый XI также имеет две кнопки для увеличения и уменьшения значение в текстовом поле справа, это те, с которыми мне нужна помощь.Изменение значения UITextField внутри tableViewCell с помощью кнопки с использованием делегата

enter image description here

В @IBActions для кнопок в клетке называют функции делегата в SuperView ячейки, кнопка с зеленым X уже работает, делает то, что он должен делать, но то, что мне нужно сделать теперь как программировать поведение кнопок, которые увеличивают/уменьшают количество (Cantidad) продуктов, моя функция делегата уже обрабатывает данные, но теперь мне нужно, чтобы они обрабатывали значение Cantidad TextField, так что, когда пользователь нажимает кнопки, обновляемые cantidadTextField.text.

Мне просто нужно знать, как получить доступ к свойству cantidadTextField.text внутри ячейки из класса, на котором размещается TableVIew.

Я могу сделать это в методе CellForRowAtIndexPath, когда ячейка создана, но мне нужно сделать это внутри методов делегата.

Спасибо за помощь!

ответ

0

Почему вы пытаетесь обновить textField от tableviewcontroller? Из того, что я понял, изображение, которое вы разместили в вопросе, было бы полезным, не так ли? (За исключением названия «Productos»)

Лучший aproach будет управлять всем этим поведением внутри uitableviewcell. Я имею в виду, что это обновление поля uitext в каждом @IBAction внутри контроллера. Что-то вроде следующего:

@IBAction func plusPressed() { 
    let previousAmount = Int(cantidadTextField.text!) 
    cantidadTextField.text = "\(previousAmount + 1)" 
} 

@IBAction func minusPressed() { 
    let previousAmount = Int(cantidadTextField.text!) 

    guard let previousAmount > 1 else { return } 

    cantidadTextField.text = "\(previousAmount - 1)" 
} 

Если это не может Подход быть сделано, и вы должны обновить его от контроллера, вы можете сохранить ссылку на ячейку, когда вы создаете ее в переменной в контроллере. Но будьте осторожны, что из-за повторного использования ячеек эта ячейка может быть повторно использована для другого «producto» после прокрутки, например.

Возможно, с некоторым кодом мы можем видеть проблему лучше!

+0

Причина, почему я не хочу, чтобы обновить TextField непосредственно из клетки, потому что мне нужна переменная, которая хранится в PLIST, который загружается в надтаблицы , поэтому, если мне нужно будет передать значение из супервизора в ячейку, я бы добавил дополнительную сложность. Причина, по которой я не создаю переменную в контроллере, объясняется именно повторным использованием ячеек. Я могу поделиться своим кодом, но просмотр довольно сложный, потому что UIView имеет три пользовательских табличных представления, и каждый из них имеет разные типы поведения и разные Nibs в зависимости от поведения. –

0

решаемые

Что мне нужно сделать, чтобы получить доступ к текстовому полю непосредственно из ячейки, обновить значение в текстовом поле, а затем вызовите делегат, который затем обновляет данные, а также.

Это один из способов.

@IBAction func increaseAmount(_ sender: UIButton) { 

    let cantidadStr = cantidadProducto.text 

    if let cantidadInt = Int(cantidadStr!) { 
     var cantidad = cantidadInt 
     cantidad += 1 
     let strCantidad = String(cantidad) 

     cantidadProducto.text = strCantidad 
    } 

    self.delegate?.increaseProductQuantityTapped(sender: self, at: indexPath) 

} 

А другой

@IBAction func decreaseAmount(_ sender: UIButton) { 

    let cantidadStr = cantidadProducto.text 

    if let cantidadInt = Int(cantidadStr!) { 
     var cantidad = cantidadInt 
     if cantidad > 1 { 
      cantidad -= 1 
      let strCantidad = String(cantidad) 

      cantidadProducto.text = strCantidad 

      self.delegate?.decreaseProductQuantityTapped(sender: self, at: indexPath) 
     } else { 
      return 
     } 
    } 
} 
Смежные вопросы