使用按钮刷新/重新加载Eureka PushRow推送的ViewController选项?

时间:2018-05-16 17:02:49

标签: eureka-forms

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

我有一个PushRow,它为默认的SelectorViewController提供了一个选项列表。在推送视图中,我添加了一个指向 locationSelectorAddButton ...的rightBarButtonItem点击,这会打开一个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 :(得分:0)

不使用tag属性重新加载推行。您需要实现

  

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