首页 > 解决方案 > 使用按钮刷新/重新加载 Eureka PushRow 推送的 ViewController 选项?

问题描述

我在我的项目中使用 Eureka 表单。

我有一个 PushRow ,它显示带有选项列表的默认 SelectorViewController。在推送视图中,我添加了一个 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)
    }

标签: eureka-forms

解决方案


使用标签属性不会重新加载推送行。您需要实现该方法

cellUpdate { 单元格,row in row.options =(在此处为更新的选项赋值)}


推荐阅读