Обновить / Перезагрузить Eureka PushRow с помощью кнопки ViewController с помощью кнопки? - PullRequest
0 голосов
/ 16 мая 2018

Я использую формы Eureka в своем проекте.

У меня есть PushRow, который представляет SelectorViewController по умолчанию со списком параметров. В режиме push-уведомлений я добавил rightBarButtonItem, который указывает на locationSelectorAddButton ... при щелчке; это вызывает UIAlertController, который должен позволять пользователям добавлять опции в этот контроллер с принудительной отправкой.

Можно ли, не создавая собственный контроллер селектора, обновить текущий контроллер новыми сохраненными параметрами из UserDefaults?

let defaults = UserDefaults.standard

func setupForm() {

form
+++ PushRow<String>(K.SESSIONFIELD.location) {
                $0.title = K.SESSIONFIELD.location
                $0.options = defaults.array(forKey: K.SESSIONFIELD.location) as? [String]
                $0.value = sessionResult?.sessionLocation ?? $0.options?.first
            }
                .onPresent { from, to in
                    to.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named:"add_20pt"), style: UIBarButtonItemStyle.plain, target: from, action: #selector(self.locationSelectorAddButton(_:)))

            }
}

locationSelectorAddButton реализован следующим образом:

@objc func locationSelectorAddButton(_ sender: UIBarButtonItem) {
        var textField = UITextField()

        let alert = UIAlertController(title: "Add New Location", message: "", preferredStyle: .alert)
        let action = UIAlertAction(title: "Add", style: .default) { (action) in

            var locArray = self.defaults.array(forKey: K.SESSIONFIELD.location) as? [String]
            locArray?.append(textField.text!)
            self.defaults.set(locArray, forKey: K.SESSIONFIELD.location)

///TODO: somehow refresh the pushed view controller here!!
//            self.form.rowBy(tag: K.SESSIONFIELD.location)?.reload()
//            print("this is the list of locations currently ...\(locArray)")            
//            self.tableView.reloadData()
///
        }

        alert.addTextField { (alertTextField) in
            alertTextField.placeholder = "Location name ..."
            textField = alertTextField
        }

        alert.addAction(action)

        present(alert, animated:true, completion:nil)
    }

1 Ответ

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

Push-строка не перезагружается с помощью свойства tag Вам необходимо реализовать метод

cellUpdate {ячейка, строка в row.options = (назначьте значение здесь для обновленных параметров) }

...