Переход к одному контроллеру представления, который будет отображать некоторое количество UITextFields в зависимости от индекса, выбранного в контроллере представления таблицы - PullRequest
0 голосов
/ 24 декабря 2018

В моем текущем приложении у меня есть UITableViewController, который позволяет мне переходить к трем различным индексам в зависимости от выбранной строки.Если я выбираю первую строку, я перехожу к контроллеру представления с тремя UITextFields.Если я выбираю вторую строку, я перехожу к НОВОМУ контроллеру представления с одним UITextField.Если я выберу третий ряд, я перехожу к ДРУГОЙ НОВЫЙ контроллер представления с пятью UITextFields.Я ищу способ уплотнения контроллеров представления, которые я собираюсь в один контроллер представления, который будет динамически скрывать / показывать или удалять / добавлять необходимое количество UITextFields в зависимости от индекса, выбранного в контроллере табличного представления.Мне нужно, чтобы текстовые поля отображались в виде вертикального стека.

Хотя это было бы очень ценно, я не ищу решение / пример от кого-то, а скорее дам мне знать некоторые темы, которые я могу исследовать, было бы чрезвычайно полезно.

Спасибо за ваше время,

Тони

1 Ответ

0 голосов
/ 24 декабря 2018

Для этой проблемы могут быть разные подходы, но я бы создал stackView в НОВОМ контроллере представления с максимально возможным количеством встроенных textFields.Допустим, ВК с большинством текстовых полей может содержать 3 текстовых поля.Создайте свой stackView с 3 textFields внутри.

Затем передайте indexPath.row tableView на новый VC, он может содержать переменную типа Integer, например:

var index: Int?

In didSelectRowAt метод tableView:

performSegue(withIdentifier: "yourIdentifier", sender: indexPath.row)

In prepareForSegue метод:

if segue.identifier == "yourIdentifier"
let vc = segue.destination as! NEWViewController
vc.index = sender

Установите тег для ваших textFields в вашем контроллере NEW View, чтобы вы могли знать, какой textField вы захотитеудалить в зависимости от индекса.Затем в viewDidLoad вашего newViewController вы можете удалить textFields из вашего stackView в соответствии с индексом (тогда вы можете столкнуться с каким):

    var counter = 0
    while counter < index {
        answerStackView.subviews.forEach { (view) in
            if counter < index {
                if view is UITextField {
                    if view.tag == /*something here to delete specific textFields depending on index. */ {
                               view.removeFromSuperview()
                    }
                }
            }

            counter += 1
        }
    }
...