代码之家  ›  专栏  ›  技术社区  ›  Nil

swift 3使用ViewController中的textField将行添加到TableViewController

  •  1
  • Nil  · 技术社区  · 7 年前

    enter image description here

    在tableViewController中创建的新行中传递textField的值时遇到问题。 谁能帮点忙?

    [编辑]

    var updateTableViewClosure: ((String) -> Void)?
    
        @IBAction func AddButton(_ sender: Any) {
            var todoValue = titleField.text
            updateTableViewClosure?(todoValue!)
        }
    
        @IBOutlet weak var titleField: UITextField!
    

    if segue.identifier == "CreateAdd" {
    
        let addItemViewController = segue.destination as! CreateAdd
        addItemViewController.updateTableViewClosure = {
            newItem in myItems(title: todoValue, content:"hello", ontent: "Ceci est le contenu" , startDate: "16/08/1997", author: "Clem")
        }
    }
    

    我收到一个错误:

    使用未解析的“todoValue”

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mo Abdul-Hameed Martheli    7 年前

    您需要一种将数据传递回包含表视图的视图控制器的方法。这可以通过多种方式实现,例如使用委托模式。

    实现这一点的一个简单方法是使用闭包,如下所示:

    在包含表视图的视图控制器中:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "identifier" {
    
            let addItemViewController = segue.destination as! AddItemViewController
            addItemViewController.updateTableViewClosure = {
                newItem in
    
                // Add the new item to your data source and reload your table view.
            }
        }
    }
    

    在里面 AddItemViewController 添加一个名为 updateTableViewClosure

    var updateTableViewClosure: (String -> Void)?
    

    无论你想在哪里都可以这样称呼它:

    updateTableViewClosure?("The new item")